@@ -1104,25 +1104,36 @@ void GameLogic::PerformMaintenance() {
11041104void GameLogic::HandleIPCMessage (const nlohmann::json& message) {
11051105 try {
11061106 std::string msgType = message.value (" type" , " " );
1107- Logger::Debug (" GameLogic handling IPC message type: {}" , msgType);
1108-
1109- if (msgType == " welcome" ) {
1110- Logger::Info (" Received welcome message from master: {}" , message.value (" message" , " " ));
1111- } else if (msgType == " heartbeat" ) {
1112- // Handle heartbeat from master
1113- int count = message.value (" count" , 0 );
1114- Logger::Debug (" Received heartbeat #{} from master" , count);
1115- } else if (msgType == " broadcast" ) {
1116- // Broadcast message to all players
1117- if (message.contains (" data" )) {
1118- BroadcastToAllPlayers (message[" data" ]);
1119- }
1120- } else if (msgType == " shutdown" ) {
1121- Logger::Info (" Received shutdown command from master" );
1122- Shutdown ();
1123- } else if (msgType == " reload_config" ) {
1124- Logger::Info (" Received config reload command from master" );
1125- // Reload configuration if needed
1107+ auto it = WebSocketProtocol::IPCMessageTypes.find (msgType);
1108+ if (it == WebSocketProtocol::IPCMessageTypes.end ()) {
1109+ Logger::Warn (" Unknown IPC message type: {}" , msgType);
1110+ return ;
1111+ }
1112+ int typeCode = it->second ;
1113+ switch (typeCode) {
1114+ case 1 : // welcome
1115+ // Logger::Info("Received welcome message from master: {}", message.value("message", ""));
1116+ break ;
1117+ case 2 : // heartbeat
1118+ // int count = message.value("count", 0);
1119+ // Logger::Debug("Received heartbeat #{} from master", count);
1120+ break ;
1121+ case 3 : // broadcast
1122+ if (message.contains (" data" )) {
1123+ BroadcastToAllPlayers (message[" data" ]);
1124+ }
1125+ break ;
1126+ case 4 : // shutdown
1127+ Logger::Info (" Received shutdown command from master" );
1128+ Shutdown ();
1129+ break ;
1130+ case 5 : // reload_config
1131+ Logger::Info (" Received config reload command from master" );
1132+ // TODO: Reload configuration if needed
1133+ break ;
1134+ default :
1135+ Logger::Warn (" Unhandled IPC message code: {}" , typeCode);
1136+ break ;
11261137 }
11271138 } catch (const std::exception& e) {
11281139 Logger::Error (" Error handling IPC message: {}" , e.what ());
@@ -1144,7 +1155,7 @@ void GameLogic::BroadcastToAllPlayers(const nlohmann::json& message) {
11441155 auto sessions = connectionManager_->GetAllSessions ();
11451156
11461157 if (sessions.empty ()) {
1147- Logger::Debug (" No active sessions to broadcast to" );
1158+ // Logger::Debug("No active sessions to broadcast to");
11481159 return ;
11491160 }
11501161
@@ -1180,7 +1191,7 @@ void GameLogic::BroadcastToAllPlayersBinary(uint16_t messageType, const std::vec
11801191 auto sessions = connectionManager_->GetAllSessions ();
11811192
11821193 if (sessions.empty ()) {
1183- Logger::Debug (" No active sessions to broadcast binary to" );
1194+ // Logger::Debug("No active sessions to broadcast binary to");
11841195 return ;
11851196 }
11861197
0 commit comments