bool CKeeper::OnCommand( MCommand* pCommand ) { if( MClient::OnCommand(pCommand) ) return true; switch( pCommand->GetID() ) { case MC_RESPONSE_KEEPER_MANAGER_CONNECT : { OnResponseConnectKeeperManager( pCommand->GetSenderUID() ); } break; case MC_CHECK_KEEPER_MANAGER_PING : { OnRecvPing( pCommand ); return true; } case MC_RESPONSE_KEEPER_CONNECT_MATCHSERVER : { MUID uidKeeper; pCommand->GetParameter( &uidKeeper, 0, MPT_UID ); OnResponseKeeperConnectMatchServer( uidKeeper ); } break; case MC_RESPONSE_CONNECTION_STATE : { CONNECTION_STATE nServerState; pCommand->GetParameter( &nServerState, 0, MPT_INT ); OnResponseConnectionState( nServerState ); } break; case MC_RESPONSE_CONFIG_STATE : { CONFIG_STATE nServerConfig; CONFIG_STATE nAgentConfig; CONFIG_STATE nDownloadConfig; CONFIG_STATE nPrepareConfig; CONFIG_STATE nPatchConfig; pCommand->GetParameter( &nServerConfig, 0, MPT_INT ); pCommand->GetParameter( &nAgentConfig, 1, MPT_INT ); pCommand->GetParameter( &nDownloadConfig, 2, MPT_INT ); pCommand->GetParameter( &nPrepareConfig, 3, MPT_INT ); pCommand->GetParameter( &nPatchConfig, 4, MPT_INT ); OnResponseConfigState( nServerConfig, nAgentConfig, nDownloadConfig, nPrepareConfig, nPatchConfig ); } break; case MC_RESPONSE_SET_ONE_CONFIG : { COLUMN_ID nColumnID; CONFIG_STATE nConfigState; pCommand->GetParameter( &nColumnID, 0, MPT_INT ); pCommand->GetParameter( &nConfigState, 1, MPT_INT ); OnResponseSetOneConfig( nColumnID, nConfigState ); } break; case MC_RESPONSE_LAST_JOB_STATE : { JOB_STATE nJob; JOB_STATE nState; pCommand->GetParameter( &nJob, 0, MPT_INT ); pCommand->GetParameter( &nState, 1, MPT_INT ); OnResponseLastJobState( nJob, nState ); } break; case MC_RESPONSE_ANNOUNCE_STOP_SERVER : { } break; case MC_RESPONSE_SERVER_AGENT_STATE : { RUN_STATE ServerRunState; RUN_STATE AgentRunState; pCommand->GetParameter( &ServerRunState, 0, MPT_INT ); pCommand->GetParameter( &AgentRunState, 1, MPT_INT ); OnResponseServerAgentState( ServerRunState, AgentRunState ); } break; case MC_RESPONSE_SERVER_STATUS : { SERVER_ERR_STATE ServerErrState; char szServerResVer[ 128 ] = {0,}; char szServerLastMod[ 128 ] = {0,}; char szAgentLastMod[ 128 ] = {0,}; char szKeeperLastMod[ 128 ] = {0,}; ULONGLONG nServerFileSize = 0; ULONGLONG nAgentFileSize = 0; ULONGLONG nKeeperFileSize = 0; unsigned char nAgentCount = 0; pCommand->GetParameter( &ServerErrState, 0, MPT_INT ); pCommand->GetParameter( szServerResVer, 1, MPT_STR, 127 ); pCommand->GetParameter( szServerLastMod, 2, MPT_STR, 127 ); pCommand->GetParameter( szAgentLastMod, 3, MPT_STR, 127 ); pCommand->GetParameter( szKeeperLastMod, 4, MPT_STR, 127 ); pCommand->GetParameter( &nServerFileSize, 5, MPT_UINT64 ); pCommand->GetParameter( &nAgentFileSize, 6, MPT_UINT64 ); // pCommand->GetParameter( &nKeeperFileSize, 7, MPT_UINT64 ); // 건너뛴것임. 없는게 아님!! pCommand->GetParameter( &nAgentCount, 8, MPT_UCHAR ); OnResponseServerStatus( ServerErrState, szServerResVer, szServerLastMod, szAgentLastMod, szKeeperLastMod, nServerFileSize, nAgentFileSize, nKeeperFileSize, nAgentCount ); } break; case MC_RESPONSE_WRITE_CLIENT_CRC : { } break; case MC_RESPONSE_KEEPER_ADD_HASHMAP : { bool bRes; pCommand->GetParameter( &bRes, 0, MPT_BOOL ); OnResponseKeeperAddHashMap( pCommand->GetSenderUID(), bRes ); } break; default : { ASSERT( 0 ); } } return true; }
bool MBMatchServer::OnCommand(MCommand* pCommand) { if( MMatchServer::OnCommand(pCommand) ) return true; switch( pCommand->GetID() ) { case MC_MATCH_SCHEDULE_ANNOUNCE_MAKE : { char szAnnounce[ 512 ]; pCommand->GetParameter( szAnnounce, 0, MPT_STR, 512 ); OnScheduleAnnounce( szAnnounce ); } break; case MC_MATCH_SCHEDULE_CLAN_SERVER_SWITCH_DOWN : OnScheduleClanServerSwitchDown(); break; case MC_MATCH_SCHEDULE_CLAN_SERVER_SWITCH_ON : OnScheduleClanServerSwitchUp(); break; case MC_REQUEST_KEEPER_CONNECT_MATCHSERVER : OnRequestConnectMatchServer( pCommand->GetSenderUID() ); break; case MC_REQUEST_MATCHSERVER_STATUS : OnResponseServerStatus(pCommand->GetSenderUID()); break; case MC_REQUEST_SERVER_HEARBEAT : OnRequestServerHearbeat( pCommand->GetSenderUID() ); break; case MC_REQUEST_KEEPER_ANNOUNCE : { char szAnnounce[ 256 ]; pCommand->GetParameter( szAnnounce, 0, MPT_STR, 256 ); OnRequestKeeperAnnounce( pCommand->GetSenderUID(), szAnnounce ); } break; case MC_REQUEST_ANNOUNCE_STOP_SERVER : OnRequestStopServerWithAnnounce( pCommand->GetSenderUID() ); break; case MC_REQUEST_KEEPER_MANAGER_SCHEDULE : { int nType; int nYear; int nMonth; int nDay; int nHour; int nMin; int nCount; int nCommand; char szAnnounce[ 256 ] = {0,}; pCommand->GetParameter( &nType, 0, MPT_INT ); pCommand->GetParameter( &nYear, 1, MPT_INT ); pCommand->GetParameter( &nMonth, 2, MPT_INT ); pCommand->GetParameter( &nDay, 3, MPT_INT ); pCommand->GetParameter( &nHour, 4, MPT_INT ); pCommand->GetParameter( &nMin, 5, MPT_INT ); pCommand->GetParameter( &nCount, 6, MPT_INT ); pCommand->GetParameter( &nCommand, 7, MPT_INT ); pCommand->GetParameter( szAnnounce, 8, MPT_STR, 255 ); OnRequestSchedule( pCommand->GetSenderUID(), nType, nYear, nMonth, nDay, nHour, nMin, nCount, nCommand, szAnnounce ); } break; case MC_MATCH_SCHEDULE_STOP_SERVER : { char szAnnounce[ 256 ] = { 0, }; pCommand->GetParameter( szAnnounce, 0, MPT_STR, 255 ); OnRequestKeeperStopServerSchedule( pCommand->GetSenderUID(), szAnnounce ); } break; case MC_REQUEST_RELOAD_CONFIG: { char szFileList[1024] = { 0, }; pCommand->GetParameter(szFileList, 0, MPT_STR, 1024); OnRequestReloadServerConfig(pCommand->GetSenderUID(), szFileList); } break; case MC_REQUEST_ADD_HASHMAP: break; default: return false; } return true; }