void NFCMasterNet_ServerModule::OnRefreshWorldInfoProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { NFGUID nPlayerID; NFMsg::ServerInfoReportList xMsg; if (!m_pNetModule->ReceivePB(nSockIndex, nMsgID, msg, nLen, xMsg, nPlayerID)) { return; } for (int i = 0; i < xMsg.server_list_size(); ++i) { const NFMsg::ServerInfoReport& xData = xMsg.server_list(i); NF_SHARE_PTR<ServerData> pServerData = mWorldMap.GetElement(xData.server_id()); if (!pServerData.get()) { pServerData = NF_SHARE_PTR<ServerData>(NF_NEW ServerData()); mWorldMap.AddElement(xData.server_id(), pServerData); } pServerData->nFD = nSockIndex; *(pServerData->pData) = xData; m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFGUID(0, xData.server_id()), xData.server_name(), "RefreshWorldInfo"); } SynWorldToLogin(); }
int NFCMasterNet_ServerModule::OnWorldRegisteredProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { NFGUID nPlayerID; NFMsg::ServerInfoReportList xMsg; if (!RecivePB(nSockIndex, nMsgID, msg, nLen, xMsg, nPlayerID)) { return 0; } for (int i = 0; i < xMsg.server_list_size(); ++i) { NFMsg::ServerInfoReport* pData = xMsg.mutable_server_list(i); NF_SHARE_PTR<ServerData> pServerData = mWorldMap.GetElement(pData->server_id()); if (!pServerData.get()) { pServerData = NF_SHARE_PTR<ServerData>(NF_NEW ServerData()); mWorldMap.AddElement(pData->server_id(), pServerData); } pServerData->nFD = nSockIndex; *(pServerData->pData) = *pData; m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFGUID(0, pData->server_id()), pData->server_name(), "WorldRegistered"); } SynWorldToLogin(); return 0; }
void NFCMasterNet_ServerModule::OnWorldUnRegisteredProcess(const int nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { NFGUID nPlayerID; NFMsg::ServerInfoReportList xMsg; if (!m_pNetModule->ReceivePB(nSockIndex, nMsgID, msg, nLen, xMsg, nPlayerID)) { return; } for (int i = 0; i < xMsg.server_list_size(); ++i) { const NFMsg::ServerInfoReport& xData = xMsg.server_list(i); mWorldMap.RemoveElement(xData.server_id()); m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFGUID(0, xData.server_id()), xData.server_name(), "WorldUnRegistered"); } SynWorldToLogin(); }
void NFCMasterNet_ServerModule::OnClientDisconnect(const int nAddress) { //不管是login还是world都要找出来,替他反注册 NF_SHARE_PTR<ServerData> pServerData = mWorldMap.First(); while (pServerData.get()) { if (nAddress == pServerData->nFD) { pServerData->pData->set_server_state(NFMsg::EST_CRASH); pServerData->nFD = 0; SynWorldToLogin(); return; } pServerData = mWorldMap.Next(); } ////////////////////////////////////////////////////////////////////////// int nServerID = 0; pServerData = mLoginMap.First(); while (pServerData.get()) { if (nAddress == pServerData->nFD) { nServerID = pServerData->pData->server_id(); break; } pServerData = mLoginMap.Next(); } mLoginMap.RemoveElement(nServerID); }