int NFCWorldNet_ServerModule::OnGameServerRegisteredProcess(const NFIPacket& msg) { NFIDENTID nPlayerID; NFMsg::ServerInfoReportList xMsg; if (!RecivePB(msg, 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 = mGameMap.GetElement(pData->server_id()); if (!pServerData.get()) { pServerData = NF_SHARE_PTR<ServerData>(NF_NEW ServerData()); mGameMap.AddElement(pData->server_id(), pServerData); } pServerData->nFD = msg.GetFd(); *(pServerData->pData) = *pData; m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFIDENTID(0, pData->server_id()), pData->server_name(), "GameServerRegistered"); } SynGameToProxy(); return 0; }
int NFCMasterNet_ServerModule::OnRefreshWorldInfoProcess(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(), "RefreshWorldInfo"); } SynWorldToLogin(); return 0; }
void NFCGameServerToWorldModule::UnRegister() { NF_SHARE_PTR<NFILogicClass> xLogicClass = m_pLogicClassModule->GetElement("GameServer"); if (xLogicClass.get()) { NFList<std::string>& xNameList = xLogicClass->GetConfigNameList(); std::string strConfigName; if (xNameList.Get(0, strConfigName)) { const int nServerID = m_pElementInfoModule->GetPropertyInt(strConfigName, "ServerID"); const int nPort = m_pElementInfoModule->GetPropertyInt(strConfigName, "Port"); const int nMaxConnect = m_pElementInfoModule->GetPropertyInt(strConfigName, "MaxOnline"); const int nCpus = m_pElementInfoModule->GetPropertyInt(strConfigName, "CpuCount"); const std::string& strName = m_pElementInfoModule->GetPropertyString(strConfigName, "Name"); const std::string& strIP = m_pElementInfoModule->GetPropertyString(strConfigName, "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_MAINTEN); SendMsgPB(NFMsg::EGameMsgID::EGMI_GTW_GAME_UNREGISTERED, xMsg, GetNet()->FD()); m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFIDENTID(0, pData->server_id()), pData->server_name(), "UnRegister"); } } }
bool NFCLoginNet_HttpServerModule::OnWorldView(const NFHttpRequest & req) { std::string strResponse; NFResponseWorldList xResponsetWorldList; NFMapEx<int, NFMsg::ServerInfoReport>& xWorldMap = m_pLoginToMasterModule->GetWorldMap(); NFMsg::ServerInfoReport* pWorldData = xWorldMap.FirstNude(); while (pWorldData) { NFResponseWorldList::NFWorld xWorld; xWorld.id = pWorldData->server_id(); xWorld.name = pWorldData->server_name(); xWorld.state = pWorldData->server_state(); xWorld.count = pWorldData->server_cur_count(); xResponsetWorldList.world.push_back(xWorld); pWorldData = xWorldMap.NextNude(); } ajson::string_stream ss; ajson::save_to(ss, xResponsetWorldList); strResponse = ss.str(); return m_pHttpNetModule->ResponseMsg(req, strResponse, NFWebStatus::WEB_OK); }
int NFCWorldNet_ServerModule::OnGameServerUnRegisteredProcess(const NFIPacket& msg) { NFIDENTID nPlayerID; NFMsg::ServerInfoReportList xMsg; if (!RecivePB(msg, xMsg, nPlayerID)) { return 0; } for (int i = 0; i < xMsg.server_list_size(); ++i) { NFMsg::ServerInfoReport* pData = xMsg.mutable_server_list(i); mGameMap.RemoveElement(pData->server_id()); m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFIDENTID(0, pData->server_id()), pData->server_name(), "GameServerRegistered"); } return 0; }
int NFCMasterNet_ServerModule::OnLoginUnRegisteredProcess(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); mLoginMap.RemoveElement(pData->server_id()); m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFGUID(0, pData->server_id()), pData->server_name(), "LoginUnRegistered"); } return 0; }
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"); } } } } }
void NFCGameServerToWorldModule::Register(NFINet* pNet) { //成功就注册 NF_SHARE_PTR<NFILogicClass> xLogicClass = m_pLogicClassModule->GetElement("Server"); if (xLogicClass.get()) { NFList<std::string>& xNameList = xLogicClass->GetConfigNameList(); std::string strConfigName; for (bool bRet = xNameList.First(strConfigName); bRet; bRet = xNameList.Next(strConfigName)) { const int nServerType = m_pElementInfoModule->GetPropertyInt(strConfigName, "Type"); const int nServerID = m_pElementInfoModule->GetPropertyInt(strConfigName, "ServerID"); if (nServerType == NF_SERVER_TYPES::NF_ST_GAME && pPluginManager->AppID() == nServerID) { const int nPort = m_pElementInfoModule->GetPropertyInt(strConfigName, "Port"); const int nMaxConnect = m_pElementInfoModule->GetPropertyInt(strConfigName, "MaxOnline"); const int nCpus = m_pElementInfoModule->GetPropertyInt(strConfigName, "CpuCount"); const std::string& strName = m_pElementInfoModule->GetPropertyString(strConfigName, "Name"); const std::string& strIP = m_pElementInfoModule->GetPropertyString(strConfigName, "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); NF_SHARE_PTR<ServerData> pServerData = GetServerNetInfo(pNet); if (pServerData) { int nTargetID = pServerData->nGameID; SendToServerByPB(nTargetID, NFMsg::EGameMsgID::EGMI_GTW_GAME_REGISTERED, xMsg); m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFIDENTID(0, pData->server_id()), pData->server_name(), "Register"); } } } } }
void NFCProxyServerToWorldModule::Register(NFINet* pNet) { NF_SHARE_PTR<NFIClass> xLogicClass = m_pClassModule->GetElement(NFrame::Server::ThisName()); if (xLogicClass) { const std::vector<std::string>& strIdList = xLogicClass->GetIDList(); for (int i = 0; i < strIdList.size(); ++i) { const std::string& strId = strIdList[i]; const int nServerType = m_pElementModule->GetPropertyInt32(strId, NFrame::Server::Type()); const int nServerID = m_pElementModule->GetPropertyInt32(strId, NFrame::Server::ServerID()); if (nServerType == NF_SERVER_TYPES::NF_ST_PROXY && pPluginManager->GetAppID() == nServerID) { const int nPort = m_pElementModule->GetPropertyInt32(strId, NFrame::Server::Port()); const int nMaxConnect = m_pElementModule->GetPropertyInt32(strId, NFrame::Server::MaxOnline()); const int nCpus = m_pElementModule->GetPropertyInt32(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); NF_SHARE_PTR<ConnectData> pServerData = GetClusterModule()->GetServerNetInfo(pNet); if (pServerData) { int nTargetID = pServerData->nGameID; GetClusterModule()->SendToServerByPB(nTargetID, NFMsg::EGameMsgID::EGMI_PTWG_PROXY_REGISTERED, xMsg); m_pLogModule->LogNormal(NFILogModule::NLL_INFO_NORMAL, NFGUID(0, pData->server_id()), pData->server_name(), "Register"); } } } } }
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); }
void NFCMasterNet_ServerModule::OnServerReport(const NFSOCK nFd, const int msgId, const char* buffer, const uint32_t nLen) { NFGUID xGUID; NFMsg::ServerInfoReport msg; if (!m_pNetModule->ReceivePB(msgId, buffer, nLen, msg, xGUID)) { return; } std::shared_ptr<ServerData> pServerData; if (msg.server_type() == NF_SERVER_TYPES::NF_ST_LOGIN) { pServerData = mLoginMap.GetElement(msg.server_id()); if (!pServerData) { pServerData = std::shared_ptr<ServerData>(new ServerData()); mLoginMap.AddElement(msg.server_id(), pServerData); } } else if (msg.server_type() == NF_SERVER_TYPES::NF_ST_WORLD) { pServerData = mWorldMap.GetElement(msg.server_id()); if (!pServerData) { pServerData = std::shared_ptr<ServerData>(new ServerData()); mWorldMap.AddElement(msg.server_id(), pServerData); } } else if (msg.server_type() == NF_SERVER_TYPES::NF_ST_PROXY) { pServerData = mProxyMap.GetElement(msg.server_id()); if (!pServerData) { pServerData = std::shared_ptr<ServerData>(new ServerData()); mProxyMap.AddElement(msg.server_id(), pServerData); } } else if (msg.server_type() == NF_SERVER_TYPES::NF_ST_GAME) { pServerData = mGameMap.GetElement(msg.server_id()); if (!pServerData) { pServerData = std::shared_ptr<ServerData>(new ServerData()); mGameMap.AddElement(msg.server_id(), pServerData); } } else if (msg.server_type() == NF_SERVER_TYPES::NF_ST_AI) { pServerData = mGameMap.GetElement(msg.server_id()); if (!pServerData) { pServerData = std::shared_ptr<ServerData>(new ServerData()); mGameMap.AddElement(msg.server_id(), pServerData); } } //udate status pServerData->nFD = nFd; *(pServerData->pData) = msg; //std::cout << "ServerReport:"<<msg.server_name() << std::endl; }