#pragma once #include "../types.hpp" #include #include #include namespace LibSock { namespace Server { class Server : public std::enable_shared_from_this { public: static SP create(uint16_t port, bool reuseaddr = true, bool keepalive = false); ~Server(); SP getSocket() const; private: Server(uint16_t port, bool reuseaddr = true, bool keepalive = false); SP m_sockfd; sockaddr_in m_addr; uint16_t m_port; SP get(); mutable std::mutex m_mutex; }; inline SP pServer; } // namespace Server } // namespace LibSock