1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #ifndef SERVER_H
- #define SERVER_H
- #include <thread>
- #include <mutex>
- #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
|