#include "server.hpp" #include "sessionManager.hpp" #include #include #include CServer::CServer(uint16_t port) : m_sockfd(Hyprutils::OS::CFileDescriptor{socket(AF_INET, SOCK_STREAM, 0)}) { if (!m_sockfd.isValid()) throw std::runtime_error("Failed to create socket"); int reuse = 1; if (setsockopt(m_sockfd.get(), SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0) std::println(stderr, "setsockopt(SO_REUSEADDR) failed"); memset(&m_addr, 0, sizeof(m_addr)); m_addr.sin_family = AF_INET; m_addr.sin_port = htons(port); m_addr.sin_addr.s_addr = INADDR_ANY; m_dBind = bind(m_sockfd.get(), reinterpret_cast(&m_addr), sizeof(m_addr)); m_dListen = listen(m_sockfd.get(), 5); m_dBind < 0 || m_dListen < 0 ? throw std::runtime_error("Failed to bind or listen") : std::println("Server started on port: {}", port); }; CServer::~CServer() { m_sockfd.reset(); } void CServer::log(const eLogLevel loglevel, const std::string &message) const { std::println("[{}]: {}", "a", message); } bool CServer::isValid() { return m_sockfd.isValid() && m_dBind >= 0 && m_dListen >= 0; } Hyprutils::OS::CFileDescriptor CServer::getSocket() const { return m_sockfd.duplicate(); }