Server.h 886 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef SERVER_H
  2. #define SERVER_H
  3. #include <thread>
  4. #include <mutex>
  5. #include "server/network/IServerListener.h"
  6. using namespace std;
  7. class Server
  8. {
  9. public:
  10. Server(unsigned short port, unsigned short maxClients);
  11. virtual ~Server();
  12. void start(IServerListener* listener);
  13. void stop();
  14. private:
  15. void listenForClients();
  16. void clean();
  17. void addClient(int clientSocket);
  18. unsigned short port;
  19. unsigned short maxClients;
  20. struct ConnectedClient
  21. {
  22. thread th;
  23. int socket;
  24. unsigned int index;
  25. };
  26. unsigned int clientIndex = 0;
  27. mutex clientMutex;
  28. ConnectedClient** clients = nullptr;
  29. void listenOnClient(ConnectedClient* cc);
  30. volatile bool shouldRun = false;
  31. int listenerSocket;
  32. thread listenerThread;
  33. IServerListener* serverListener = nullptr;
  34. };
  35. #endif