#ifndef SERVER_H #define SERVER_H #include #include #include "server/network/IServerListener.h" using namespace std; class Server { public: Server(unsigned short port, unsigned short maxClients); virtual ~Server(); void start(IServerListener* listener); void stop(); private: void listenForClients(); void clean(); void addClient(int clientSocket); unsigned short port; unsigned short maxClients; struct ConnectedClient { thread th; int socket; unsigned int index; }; unsigned int clientIndex = 0; mutex clientMutex; ConnectedClient** clients = nullptr; void listenOnClient(ConnectedClient* cc); volatile bool shouldRun = false; int listenerSocket; thread listenerThread; IServerListener* serverListener = nullptr; }; #endif