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"); } } } } }
bool NFCWorldToMasterModule::AfterInit() { m_pClassModule = pPluginManager->FindModule<NFIClassModule>(); m_pElementModule = pPluginManager->FindModule<NFIElementModule>(); m_pLogModule = pPluginManager->FindModule<NFILogModule>(); m_pWorldNet_ServerModule = pPluginManager->FindModule<NFIWorldNet_ServerModule>(); m_pNetClientModule->AddReceiveCallBack(NFMsg::EGMI_REQ_CONNECT_WORLD, this, &NFCWorldToMasterModule::OnSelectServerProcess); m_pNetClientModule->AddReceiveCallBack(NFMsg::EGMI_REQ_KICK_CLIENT_INWORLD, this, &NFCWorldToMasterModule::OnKickClientProcess); m_pNetClientModule->AddReceiveCallBack(this, &NFCWorldToMasterModule::InvalidMessage); m_pNetClientModule->AddEventCallBack(this, &NFCWorldToMasterModule::OnSocketMSEvent); 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_MASTER) { 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()); ConnectData xServerData; xServerData.nGameID = nServerID; xServerData.eServerType = (NF_SERVER_TYPES)nServerType; xServerData.strIP = strIP; xServerData.nPort = nPort; xServerData.strName = strName; m_pNetClientModule->AddServer(xServerData); } } } return true; }
bool NFCElementModule::CheckRef() { NF_SHARE_PTR<NFIClass> pLogicClass = m_pClassModule->First(); while (pLogicClass) { NF_SHARE_PTR<NFIPropertyManager> pClassPropertyManager = pLogicClass->GetPropertyManager(); if (pClassPropertyManager) { NF_SHARE_PTR<NFIProperty> pProperty = pClassPropertyManager->First(); while (pProperty) { //if one property is ref,check every config if (pProperty->GetRef()) { NFList<std::string>& strIdList = pLogicClass->GetIdList(); std::string strId; for (bool bRet = strIdList.First(strId); bRet; bRet = strIdList.Next(strId)) { const std::string& strRefValue= this->GetPropertyString(strId, pProperty->GetKey()); if (!this->GetElement(strRefValue)) { std::string msg; msg.append("check ref failed id: ").append(strRefValue).append(" in ").append(pLogicClass->GetClassName()); NFASSERT(nRet, msg.c_str(), __FILE__, __FUNCTION__); exit(0); } } } pProperty = pClassPropertyManager->Next(); } } ////////////////////////////////////////////////////////////////////////// pLogicClass = m_pClassModule->Next(); } return false; }