📄 handler_frommasterserver.cpp
字号:
#include "StdAfx.h"
#include ".\handler_frommasterserver.h"
#include <Macro.h>
#include "ServerSession.h"
#include <PacketStruct_MX.h>
#include <PacketStruct_DM.h>
#include <PacketStruct_ServerCommon.h>
#include "DBProxyServer.h"
Handler_FromMasterServer_IMPL(DM_CONNECTION_SERVER_INFO_CMD)
{
MSG_DM_CONNECTION_SERVER_INFO_CMD * pRecvMsg = (MSG_DM_CONNECTION_SERVER_INFO_CMD *)pMsg;
g_DBProxyServer.SetServerGUID( pRecvMsg->m_dwServerGUID );
g_DBProxyServer.StartServerListen( pRecvMsg->m_szDBProxyServerIP, pRecvMsg->m_wDBProxyServerPort );
}
Handler_FromMasterServer_IMPL(MX_CONNECTION_REQ_SERVER_INFO_SYN)
{
ExecuteServerInfoQuery( pServerSession, 1 );
}
VOID Handler_FromMasterServer::ExecuteServerInfoQuery( ServerSession * pServerSession, BYTE Page )
{
TCHAR szQueryBuff[64];
_sntprintf( szQueryBuff, 64, "S_ServerInfoList %u, %u", Page, ServerInfoQuery::SERVERINFO_ROW_NUM );
ServerInfoQuery * pQuery = QUERYALLOC(ServerInfoQuery);
ZeroMemory( pQuery->pServerInfo, sizeof(ServerInfoQuery::tag_SERVERINFO)*ServerInfoQuery::SERVERINFO_ROW_NUM );
pQuery->SetIndex( MAKEDWORD( (WORD)MX_CONNECTION, (WORD)MX_CONNECTION_REQ_SERVER_INFO_DBR ) );
pQuery->SetVoidObject( pServerSession );
pQuery->SetQuery( szQueryBuff );
pQuery->SetCurPage(Page);
pServerSession->DBQuery( pQuery );
}
Handler_FromMasterServer_IMPL(MX_CONNECTION_REQ_SERVER_INFO_DBR)
{
MSG_DBPROXY_RESULT * pResult = (MSG_DBPROXY_RESULT *)pMsg;
ServerInfoQuery * pQResult = (ServerInfoQuery *)pResult->m_pData;
if( pQResult->GetResultRowNum() != 0 )
{
ASSERT( MSG_MX_CONNECTION_REQ_SERVER_INFO_ACK::_MAX_SERVERINFO_ARRAY_NUM != ServerInfoQuery::SERVERINFO_ROW_NUM );
ASSERT( pQResult->GetResultRowNum() < MSG_MX_CONNECTION_REQ_SERVER_INFO_ACK::_MAX_SERVERINFO_ARRAY_NUM );
MSG_MX_CONNECTION_REQ_SERVER_INFO_ACK msg;
msg.m_byCategory = MX_CONNECTION;
msg.m_byProtocol = MX_CONNECTION_REQ_SERVER_INFO_ACK;
msg.m_dwNumberOfServerInfo = pQResult->GetResultRowNum();
for( DWORD i = 0 ; i < msg.m_dwNumberOfServerInfo ; ++i )
{
msg.m_ServerInfo[i].ServerKey.Set( pQResult->pServerInfo[i].byWorldID,
pQResult->pServerInfo[i].byChannelID,
pQResult->pServerInfo[i].byServerType,
pQResult->pServerInfo[i].byServerID );
msg.m_ServerInfo[i].dwServerGUID = pQResult->pServerInfo[i].dwServerGUID;
msg.m_ServerInfo[i].wPort = (WORD)pQResult->pServerInfo[i].iPort;
msg.m_ServerInfo[i].wInnerPort = (WORD)pQResult->pServerInfo[i].iInnerPort;
strncpy( msg.m_ServerInfo[i].szIP, pQResult->pServerInfo[i].pszIP, MAX_IPADDRESS_SIZE );
strncpy( msg.m_ServerInfo[i].szInnerIP, pQResult->pServerInfo[i].pszInnerIP, MAX_IPADDRESS_SIZE );
}
pServerSession->Send( (BYTE *)&msg, msg.GetPacketSize() );
}
if( pQResult->GetResultRowNum() == 0 || pQResult->GetResultRowNum() < ServerInfoQuery::SERVERINFO_ROW_NUM )
{
/// 付瘤阜 单捞磐 捞促.
MSG_MX_CONNECTION_REQ_SERVER_INFO_CMD msg;
msg.m_byCategory = MX_CONNECTION;
msg.m_byProtocol = MX_CONNECTION_REQ_SERVER_INFO_CMD;
pServerSession->Send( (BYTE *)&msg, sizeof(msg) );
}
else
{
ExecuteServerInfoQuery( pServerSession, pQResult->GetCurPage()+1 );
}
QUERYFREE( ServerInfoQuery, pQResult );
}
Handler_FromMasterServer_IMPL(SERVERCOMMON_SERVERSHUTDOWN_REQ)
{
MSG_SERVERCOMMON_SERVERSHUTDOWN_ANS msg;
pServerSession->SendPacket( &msg, sizeof(msg) );
// 辑滚 妓促款
g_DBProxyServer.Shutdown();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -