#ifndef GAMESERVER_H #define GAMESERVER_H #include #include #include #include "common/utils/Types.h" #include "server/network/IServerListener.h" #include "server/commands/CommandManager.h" #include "commands/ServerCommands.h" class GameServer : public IServerListener { public: GameServer(); void start(uint16_t port, uint16_t maxClients); void onFullServerClientConnect(int socket) const override; void onClientConnect(int socket) const override; void onClientPackage(int socket, Stream& in) const override; void onClientDisconnect(int socket) const override; private: void readFromConsole(); void handleCommandQueue(); const std::chrono::nanoseconds NANOS_PER_TICK = std::chrono::nanoseconds(50000000); const std::chrono::nanoseconds MIN_NANO_SLEEP = std::chrono::nanoseconds(300000); void tick(); CommandManager commandManager; ServerCommands serverCommands; std::vector commandQueue; std::mutex comandQueueMutex; }; #endif