void NFCProxyServerNet_ServerModule::OnReqServerListProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { NFGUID nPlayerID; NFMsg::ReqServerList xMsg; if (!m_pNetModule->ReceivePB(nSockIndex, nMsgID, msg, nLen, xMsg, nPlayerID)) { return; } if (xMsg.type() != NFMsg::RSLT_GAMES_ERVER) { return; } NetObject* pNetObject = m_pNetModule->GetNet()->GetNetObject(nSockIndex); if (pNetObject && pNetObject->GetConnectKeyState() > 0) { //ack all gameserver data NFMsg::AckServerList xData; xData.set_type(NFMsg::RSLT_GAMES_ERVER); NFMapEx<int, ConnectData>& xServerList = m_pProxyServerToGameModule->GetClusterModule()->GetServerList(); ConnectData* pGameData = xServerList.FirstNude(); while (NULL != pGameData) { if (ConnectDataState::NORMAL == pGameData->eState) { NFMsg::ServerInfo* pServerInfo = xData.add_info(); pServerInfo->set_name(pGameData->strName); pServerInfo->set_status(NFMsg::EServerState::EST_NARMAL); pServerInfo->set_server_id(pGameData->nGameID); pServerInfo->set_wait_count(0); } pGameData = xServerList.NextNude(); } m_pNetModule->SendMsgPB(NFMsg::EGameMsgID::EGMI_ACK_WORLD_LIST, xData, nSockIndex); } }
void NFCLoginNet_ServerModule::SynWorldToClient( const int nFD ) { NFMsg::AckServerList xData; xData.set_type(NFMsg::RSLT_WORLD_SERVER); NFMapEx<int, NFMsg::ServerInfoReport>& xWorldMap = m_pLoginToMasterModule->GetWorldMap(); NFMsg::ServerInfoReport* pWorldData = xWorldMap.FirstNude(); while (pWorldData) { NFMsg::ServerInfo* pServerInfo = xData.add_info(); pServerInfo->set_name(pWorldData->server_name()); pServerInfo->set_status(pWorldData->server_state()); pServerInfo->set_server_id(pWorldData->server_id()); pServerInfo->set_wait_count(0); pWorldData = xWorldMap.NextNude(); } SendMsgPB(NFMsg::EGameMsgID::EGMI_ACK_WORLD_LIST, xData, nFD); }