46 void acceptConnections();
51 void handleConnection(std::shared_ptr<Connection> conn);
56 void onMessage(std::shared_ptr<Connection> conn,
const std::string &data);
61 void onDisconnect(uint32_t connection_id);
64 void handleConnectRequest(std::shared_ptr<Connection> conn,
const std::string &payload);
65 void handleJoinGame(std::shared_ptr<Connection> conn,
const std::string &payload);
66 void handleListGames(std::shared_ptr<Connection> conn,
const std::string &payload);
67 void handleDisconnect(std::shared_ptr<Connection> conn,
const std::string &payload);
68 void handleMakeMove(std::shared_ptr<Connection> conn,
const std::string &payload);
69 void handleCreateGame(std::shared_ptr<Connection> conn,
const std::string &payload);
72 void sendError(std::shared_ptr<Connection> conn, uint16_t error_code,
73 const std::string &message);
74 void sendWrappedMessage(std::shared_ptr<Connection> conn,
76 void broadcastGameState(uint32_t game_id);
77 uint32_t createGame(uint8_t rows, uint8_t cols, uint8_t num_players,
78 uint8_t connect_length, std::string game_name =
"");
81 void skipAbandonedPlayers(
const std::shared_ptr<GameSession> &game);
85 sockpp::tcp_acceptor acceptor_;
88 std::map<uint32_t, std::shared_ptr<Connection>> connections_;
89 std::map<uint32_t, std::shared_ptr<GameSession>> games_;
91 std::atomic<bool> running_;
92 std::queue<uint32_t> free_connection_ids_;
93 std::queue<uint32_t> free_game_ids_;
95 std::mutex connections_mutex_;
96 std::mutex games_mutex_;