19class ConnectionsManager
23 using WatermarkType = int64_t;
24 static ConnectionsManager* connections_manager;
26 static constexpr WatermarkType watermark_ref = 0x08FEEF0100112233ULL;
39 static constexpr char cmd_from_client_subscribe_starsystem[] =
"subscribe_starsystem";
40 static constexpr char cmd_from_client_unsubscribe_starsystem[] =
"unsubscribe_starsystem";
41 static constexpr char cmd_from_client_get_player_data[] =
"player_data";
42 static constexpr char cmd_from_client_get_starsystem_data[] =
"starsystem_data";
43 static constexpr char cmd_from_client_get_rules[] =
"rules";
47 static constexpr char cmd_to_client_player_data[] =
"player_data";
48 static constexpr char cmd_to_client_starsystem_data[] =
"starsystem_data";
49 static constexpr char cmd_to_client_rules_data[] =
"rules";
52 static constexpr char cmd_quit_request[] =
"quit";
55 ConnectionsManager(
int listen_port,
const std::string& listen_on, std::atomic<bool>& keep_running );
56 ~ConnectionsManager();
60 static bool sendMessage(
const std::string& command_name,
const nlohmann::json& command_data, std::unique_ptr<SocketDevice>& connection );
61 static bool sendPackedMessage(
const std::vector<uint8_t>& command_packed_data, std::unique_ptr<SocketDevice>& connection );
62 static bool receiveMessage( nlohmann::json& command_data, std::unique_ptr<SocketDevice>& connection );
65 static void static_run( ConnectionsManager* myself );
69 bool _acceptConnection( std::unique_ptr<SocketDevice>& connection );
72 bool _checkCommand(std::unique_ptr<SocketDevice>& connection,
ObjectId player_id );
73 bool _subscribeStarsystem(
const nlohmann::json& command_data,
ObjectId player_id);
74 bool _unsubscribeStarsystem(
const nlohmann::json &command_data,
ObjectId player_id );
75 bool _getPlayerData(
const nlohmann::json &command_data, std::unique_ptr<SocketDevice> &client);
76 bool _getStarsystemData(
const nlohmann::json &command_data, std::unique_ptr<SocketDevice> &client);
77 bool _getRules( std::unique_ptr<SocketDevice>& client );
80 bool _sendPlayerData( std::unique_ptr<SocketDevice>& client,
ObjectId player_id );
81 bool _sendStarsystemData( std::unique_ptr<SocketDevice>& client,
ObjectId starsystem_id );
82 bool _sendRules( std::unique_ptr<SocketDevice>& client );
86 std::atomic<bool>& _keep_running;
88 std::map<ObjectId, std::unique_ptr<SocketDevice>> _connected_players;
89 std::map<ObjectId, std::set<ObjectId>> _subscribed_starsystems;