void NFCWorldToMasterModule::ServerReport() { if (mLastReportTime + 10 > pPluginManager->GetNowTime()) { return; } mLastReportTime = pPluginManager->GetNowTime(); std::shared_ptr<NFIClass> xLogicClass = m_pClassModule->GetElement(NFrame::Server::ThisName()); if (xLogicClass) { NFList<std::string>& strIdList = xLogicClass->GetIdList(); std::string strId; for (bool bRet = strIdList.First(strId); bRet; bRet = strIdList.Next(strId)) { const int nServerType = m_pElementModule->GetPropertyInt(strId, NFrame::Server::Type()); const int nServerID = m_pElementModule->GetPropertyInt(strId, NFrame::Server::ServerID()); if (pPluginManager->GetAppID() == nServerID) { const int nPort = m_pElementModule->GetPropertyInt(strId, NFrame::Server::Port()); const int nMaxConnect = m_pElementModule->GetPropertyInt(strId, NFrame::Server::MaxOnline()); const std::string& strName = m_pElementModule->GetPropertyString(strId, NFrame::Server::Name()); const std::string& strIP = m_pElementModule->GetPropertyString(strId, NFrame::Server::IP()); NFMsg::ServerInfoReport reqMsg; reqMsg.set_server_id(nServerID); reqMsg.set_server_name(strName); reqMsg.set_server_cur_count(0); reqMsg.set_server_ip(strIP); reqMsg.set_server_port(nPort); reqMsg.set_server_max_online(nMaxConnect); reqMsg.set_server_state(NFMsg::EST_NARMAL); reqMsg.set_server_type(nServerType); for (int n = 0;n < 10;n++) { AddServerInfoExt("key" + lexical_cast<std::string>(n), "value" + lexical_cast<std::string>(n)); } NFMsg::ServerInfoExt pb_ServerInfoExt; for (auto it = m_mServerInfoExt.begin(); it != m_mServerInfoExt.end(); it++) { *pb_ServerInfoExt.add_key() = it->first; *pb_ServerInfoExt.add_value() = it->second; } reqMsg.mutable_server_info_list_ext()->CopyFrom(pb_ServerInfoExt); std::shared_ptr<ConnectData> pServerData = m_pNetClientModule->GetServerList().First(); if (pServerData) { m_pNetClientModule->SendToServerByPB(pServerData->nGameID, NFMsg::EGMI_STS_SERVER_REPORT, reqMsg); } } } } }
void NFCWorldToMasterModule::Register(NFINet* pNet) { NF_SHARE_PTR<NFIClass> xLogicClass = m_pClassModule->GetElement(NFrame::Server::ThisName()); if (xLogicClass) { NFList<std::string>& strIdList = xLogicClass->GetIdList(); std::string strId; for (bool bRet = strIdList.First(strId); bRet; bRet = strIdList.Next(strId)) { const int nServerType = m_pElementModule->GetPropertyInt(strId, NFrame::Server::Type()); const int nServerID = m_pElementModule->GetPropertyInt(strId, NFrame::Server::ServerID()); if (nServerType == NF_SERVER_TYPES::NF_ST_WORLD && pPluginManager->GetAppID() == nServerID) { const int nPort = m_pElementModule->GetPropertyInt(strId, NFrame::Server::Port()); const int nMaxConnect = m_pElementModule->GetPropertyInt(strId, NFrame::Server::MaxOnline()); const int nCpus = m_pElementModule->GetPropertyInt(strId, NFrame::Server::CpuCount()); const std::string& strName = m_pElementModule->GetPropertyString(strId, NFrame::Server::Name()); const std::string& strIP = m_pElementModule->GetPropertyString(strId, NFrame::Server::IP()); NFMsg::ServerInfoReportList xMsg; NFMsg::ServerInfoReport* pData = xMsg.add_server_list(); pData->set_server_id(nServerID); pData->set_server_name(strName); pData->set_server_cur_count(0); pData->set_server_ip(strIP); pData->set_server_port(nPort); pData->set_server_max_online(nMaxConnect); pData->set_server_state(NFMsg::EST_NARMAL); pData->set_server_type(nServerType); NFMsg::ServerInfoExt pb_ServerInfoExt; pData->mutable_server_info_list_ext()->CopyFrom(pb_ServerInfoExt); NF_SHARE_PTR<ConnectData> pServerData = m_pNetClientModule->GetServerNetInfo(pNet); if (pServerData) { int nTargetID = pServerData->nGameID; m_pNetClientModule->SendToServerByPB(nTargetID, NFMsg::EGameMsgID::EGMI_MTL_WORLD_REGISTERED, xMsg); m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFGUID(0, pData->server_id()), pData->server_name(), "Register"); } } } } }