int NFCWorldNet_ServerModule::OnRefreshProxyServerInfoProcess(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 = mProxyMap.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(), "Proxy Registered"); SynGameToProxy(msg.GetFd()); } return 0; }
int NFCLoginNet_ServerModule::OnReciveClientPack(const NFIPacket& msg ) { //统一解包 int nMsgID = msg.GetMsgHead()->GetMsgID(); switch (nMsgID) { case NFMsg::EGameMsgID::EGMI_REQ_LOGIN: OnLoginProcess(msg); break; case NFMsg::EGameMsgID::EGMI_REQ_LOGOUT: break; case NFMsg::EGameMsgID::EGMI_REQ_CONNECT_WORLD: OnSelectWorldProcess(msg); break; case NFMsg::EGameMsgID::EGMI_REQ_WORLD_LIST: OnViewWorldProcess(msg); break; // case NFMsg::EGameMsgID::EGMI_ACK_CONNECT_WORLD: // OnObjectPropertyIntProcess(msg); // break; default: printf("NFNet || 非法消息:unMsgID=%d\n", nMsgID); break; } return 0; }
int NFCLoginNet_ServerModule::OnSelectWorldProcess( const NFIPacket& msg ) { NFIDENTID nPlayerID; NFMsg::ReqConnectWorld xMsg; if (!RecivePB(msg, xMsg, nPlayerID)) { return 0; } NetObject* pNetObject = GetNet()->GetNetObject(msg.GetFd()); if (!pNetObject) { return 0; } //没登录过 if (pNetObject->GetConnectKeyState() <= 0) { return 0; } NFCDataList val; val << xMsg.world_id() << pNetObject->GetClientID() << pPluginManager->AppID() << pNetObject->GetAccount(); m_pEventProcessModule->DoEvent(NFIDENTID(), NFED_ON_CLIENT_SELECT_SERVER, val); return 0; }
int NFCWorldNet_ServerModule::OnRecivePack( const NFIPacket& msg ) { switch (msg.GetMsgHead()->GetMsgID()) { case NFMsg::EGameMsgID::EGMI_PTWG_PROXY_REFRESH: OnRefreshProxyServerInfoProcess(msg); break; case NFMsg::EGameMsgID::EGMI_PTWG_PROXY_REGISTERED: OnProxyServerRegisteredProcess(msg); break; case NFMsg::EGameMsgID::EGMI_PTWG_PROXY_UNREGISTERED: OnProxyServerUnRegisteredProcess(msg); break; case NFMsg::EGameMsgID::EGMI_GTW_GAME_REGISTERED: OnGameServerRegisteredProcess(msg); break; case NFMsg::EGameMsgID::EGMI_GTW_GAME_UNREGISTERED: OnGameServerUnRegisteredProcess(msg); break; case NFMsg::EGameMsgID::EGMI_GTW_GAME_REFRESH: OnRefreshGameServerInfoProcess(msg); break; default: break; } return 0; }
bool NFCNet::SendMsgToAllClient( const NFIPacket& msg ) { std::map<int, NetObject*>::iterator it = mmObject.begin(); for (; it != mmObject.end(); ++it) { NetObject* pNetObject = (NetObject*)it->second; if (pNetObject && !pNetObject->GetRemoveState()) { bufferevent* bev = pNetObject->GetBuffEvent(); if (NULL != bev) { bufferevent_write(bev, msg.GetPacketData(), msg.GetPacketLen()); } } } return true; }
int NFCWorldToMasterModule::OnReciveMSPack( const NFIPacket& msg ) { int nMsgID = msg.GetMsgHead()->GetMsgID(); switch (nMsgID) { case NFMsg::EGameMsgID::EGMI_REQ_CONNECT_WORLD: OnSelectServerProcess(msg); break; case NFMsg::EGameMsgID::EGMI_REQ_KICK_CLIENT_INWORLD: OnKickClientProcess(msg); break; default: printf("NFNet || 非法消息:unMsgID=%d\n", msg.GetMsgHead()->GetMsgID()); break; } return 0; }
int NFCGameServerToWorldModule::TransPBToProxy( const NFIPacket& msg ) { NFIDENTID nPlayerID; std::string strData; if (!NFINetModule::RecivePB(msg, strData, nPlayerID)) { return 0; } m_pGameServerNet_ServerModule->SendMsgPBToGate(msg.GetMsgHead()->GetMsgID(), strData, nPlayerID); return 0; }
int NFCGameServerToWorldModule::OnAckLeaveGuildProcess( const NFIPacket& msg ) { NFIDENTID nPlayerID; NFMsg::ReqAckLeaveGuild xData; if (!NFINetModule::RecivePB(msg, xData, nPlayerID)) { return 0; } m_pKernelModule->SetPropertyObject(nPlayerID, "GuildID", NFIDENTID()); m_pGameServerNet_ServerModule->SendMsgPBToGate(msg.GetMsgHead()->GetMsgID(), xData, nPlayerID); return 0; }
int NFCLoginNet_ServerModule::OnViewWorldProcess( const NFIPacket& msg ) { NFIDENTID nPlayerID; NFMsg::ReqServerList xMsg; if (!RecivePB(msg, xMsg, nPlayerID)) { return 0; } if (xMsg.type() == NFMsg::RSLT_WORLD_SERVER) { SynWorldToClient(msg.GetFd()); } return 0; }
int NFCGameServerToWorldModule::OnAckJoinGuildProcess( const NFIPacket& msg ) { NFIDENTID nPlayerID; NFMsg::ReqAckJoinGuild xData; if (!NFINetModule::RecivePB(msg, xData, nPlayerID)) { return 0; } NFIDENTID xGuild = NFINetModule::PBToNF(xData.guild_id()); if (!xGuild.IsNull()) { m_pKernelModule->SetPropertyObject(nPlayerID, "GuildID", xGuild); } m_pGameServerNet_ServerModule->SendMsgPBToGate(msg.GetMsgHead()->GetMsgID(), xData, nPlayerID); return 0; }
int NFCGameServerToWorldModule::OnAckCreateGuildProcess( const NFIPacket& msg ) { NFIDENTID nPlayerID; NFMsg::ReqAckCreateGuild xData; if (!NFINetModule::RecivePB(msg, xData, nPlayerID)) { return 0; } NFIDENTID xGuild = NFINetModule::PBToNF(xData.guild_id()); m_pKernelModule->SetPropertyObject(nPlayerID, "GuildID", xGuild); m_pGameServerNet_ServerModule->SendMsgPBToGate(msg.GetMsgHead()->GetMsgID(), xData, nPlayerID); // NFMsg::ReqAckJoinGuild xJoinMsg; *xJoinMsg.mutable_guild_id() = NFINetModule::NFToPB(xGuild); xJoinMsg.set_guild_name(xData.guild_name()); SendSuitByPB(xGuild.nData64, NFMsg::EGameMsgID::EGMI_REQ_JOIN_GUILD, xJoinMsg, 0, nPlayerID); return 0; }
int NFCLoginNet_ServerModule::OnLoginProcess( const NFIPacket& msg ) { NFIDENTID nPlayerID; NFMsg::ReqAccountLogin xMsg; if (!RecivePB(msg, xMsg, nPlayerID)) { return 0; } NetObject* pNetObject = GetNet()->GetNetObject(msg.GetFd()); if (pNetObject) { //还没有登录过 if (pNetObject->GetConnectKeyState() == 0) { NFCDataList val; val << pNetObject->GetClientID()<< xMsg.account() << xMsg.password(); m_pEventProcessModule->DoEvent(NFIDENTID(), NFED_ON_CLIENT_LOGIN, val); } } return 0; }
int NFCGameServerToWorldModule::OnReciveWSPack( const NFIPacket& msg ) { switch (msg.GetMsgHead()->GetMsgID()) { case NFMsg::EGameMsgID::EGMI_ACK_CREATE_GUILD: OnAckCreateGuildProcess(msg); break; case NFMsg::EGameMsgID::EGMI_ACK_JOIN_GUILD: OnAckJoinGuildProcess(msg); break; case NFMsg::EGameMsgID::EGMI_ACK_LEAVE_GUILD: OnAckLeaveGuildProcess(msg); break; // // case NFMsg::EGameMsgID::EGMI_ACK_PROPERTY_INT: // TransPBToProxy< NFMsg::ObjectPropertyInt>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_PROPERTY_FLOAT: // TransPBToProxy<NFMsg::ObjectPropertyFloat>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_PROPERTY_DOUBLE: // TransPBToProxy<NFMsg::ObjectPropertyFloat>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_PROPERTY_STRING: // TransPBToProxy<NFMsg::ObjectPropertyString>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_PROPERTY_OBJECT: // TransPBToProxy<NFMsg::ObjectPropertyObject>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_RECORD_INT: // TransPBToProxy<NFMsg::ObjectRecordInt>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_RECORD_FLOAT: // TransPBToProxy<NFMsg::ObjectRecordFloat>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_RECORD_DOUBLE: // TransPBToProxy<NFMsg::ObjectRecordFloat>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_RECORD_STRING: // TransPBToProxy<NFMsg::ObjectRecordString>(msg); // break; // // case NFMsg::EGameMsgID::EGMI_ACK_RECORD_OBJECT: // TransPBToProxy<NFMsg::ObjectRecordObject>(msg); // break; // case NFMsg::EGameMsgID::EGMI_EVENT_RESULT: // TransPBToProxy<NFMsg::AckEventResult>(msg); // break; default: TransPBToProxy(msg); break; } return 0; }
bool NFCNet::SendMsg( const NFIPacket& msg, const int nSockIndex) { return SendMsg(msg.GetPacketData(), msg.GetPacketLen(), nSockIndex); }