⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packethandler.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "stdafx.h"
#include "PacketHandler.h"
#include "Handler_DM.h"
#include "Handler_MX.h"
#include "Handler_GM.h"
#include "Handler_AM.h"
#include "Handler_MW.h"
#include "Handler_MO.h"
#include "Handler_MZ.h"
#include <Protocol_DM.h>
#include <PacketStruct_DM.h>
#include <Protocol_MX.h>
#include <PacketStruct_MX.h>
#include <Protocol_GM.h>
#include <PacketStruct_GM.h>
#include <Protocol_AM.h>
#include <PacketStruct_AM.h>
#include <Protocol_MW.h>
#include <PacketStruct_MW.h>
#include <Protocol_MO.h>
#include <PacketStruct_MO.h>
#include <Protocol_ServerCommon.h>
#include <PacketStruct_ServerCommon.h>

PacketHandler::PacketHandler()
{
	m_pFuncMap_DM	= new util::FunctionMap;
	m_pFuncMap_MX	= new util::FunctionMap;
	m_pFuncMap_GM	= new util::FunctionMap;
	m_pFuncMap_BM	= new util::FunctionMap;
	m_pFuncMap_FM	= new util::FunctionMap;
	m_pFuncMap_AM	= new util::FunctionMap;
	m_pFuncMap_MW	= new util::FunctionMap;
	m_pFuncMap_MO	= new util::FunctionMap;
	m_pFuncMap_MZ	= new util::FunctionMap;
}

PacketHandler::~PacketHandler()
{
	if( m_pFuncMap_DM )		delete m_pFuncMap_DM;
	if( m_pFuncMap_MX )		delete m_pFuncMap_MX;
	if( m_pFuncMap_GM )		delete m_pFuncMap_GM;
	if( m_pFuncMap_BM )		delete m_pFuncMap_BM;
	if( m_pFuncMap_FM )		delete m_pFuncMap_FM;
	if( m_pFuncMap_AM )		delete m_pFuncMap_AM;
	if( m_pFuncMap_MW )		delete m_pFuncMap_MW;
	if( m_pFuncMap_MO )		delete m_pFuncMap_MO;
	if( m_pFuncMap_MZ )		delete m_pFuncMap_MZ;
}

// GameDBProxy肺何磐 坷绰 菩哦 殿废
BOOL PacketHandler::RegisterHandler_DM()
{
	if( !AddHandler_DM( SERVERCOMMON, SERVERCOMMON_HEARTBEAT, Handler_DM::OnSERVERCOMMON_HEARTBEAT ) )
		return FALSE;
	if( !AddHandler_DM( SERVERCOMMON, SERVERCOMMON_SERVERSHUTDOWN_ANS, Handler_DM::OnSERVERCOMMON_SERVERSHUTDOWN_ANS ) )
		return FALSE;

	return TRUE;
}

// AccountDBProxy肺何磐 坷绰 菩哦 殿废
BOOL PacketHandler::RegisterHandler_MX()
{
	if( !AddHandler_MX( MX_CONNECTION, MX_CONNECTION_REQ_SERVER_INFO_ACK, Handler_MX::OnMX_CONNECTION_REQ_SERVER_INFO_ACK ) )
		return FALSE;

	if( !AddHandler_MX( MX_CONNECTION, MX_CONNECTION_REQ_SERVER_INFO_CMD, Handler_MX::OnMX_CONNECTION_REQ_SERVER_INFO_CMD ) )
		return FALSE;

	return TRUE;
}

// 霸烙 辑滚肺何磐 坷绰 菩哦 殿废(鞘靛, 硅撇 傍烹栏肺 荤侩登绰 菩哦)
BOOL PacketHandler::RegisterHandler_GM()
{										
	if( !AddHandler_GM( SERVERCOMMON, SERVERCOMMON_HEARTBEAT, Handler_GM::OnSERVERCOMMON_HEARTBEAT ) )
		return FALSE;
	if( !AddHandler_GM( GM_OPERATION, GM_USERMONEY_NTF, Handler_GM::OnGM_USERMONEY_NTF ) )
		return FALSE;
	if( !AddHandler_GM( SERVERCOMMON, SERVERCOMMON_SERVERSHUTDOWN_ANS, Handler_GM::OnSERVERCOMMON_SERVERSHUTDOWN_ANS ) )
		return FALSE;

	return TRUE;
}

// 硅撇 辑滚肺何磐 坷绰 菩哦 殿废
BOOL PacketHandler::RegisterHandler_BM()
{
	return TRUE;
}

// 鞘靛 辑滚肺何磐 坷绰 菩哦 殿废
BOOL PacketHandler::RegisterHandler_FM()
{
	return TRUE;
}

// 俊捞傈飘 辑滚肺何磐 坷绰 菩哦 殿废
BOOL PacketHandler::RegisterHandler_AM()
{
	if( !AddHandler_AM( SERVERCOMMON, SERVERCOMMON_SERVERSHUTDOWN_ANS, Handler_AM::OnSERVERCOMMON_SERVERSHUTDOWN_ANS ) )
		return FALSE;

	return TRUE;
}

// 岿靛 辑滚肺何磐 坷绰 菩哦 殿废
BOOL PacketHandler::RegisterHandler_MW()
{
	if( !AddHandler_MW( MW_OPERATION, MW_USERCOUNT_SYN, Handler_MW::OnMW_USERCOUNT_SYN) )
		return FALSE;
	if( !AddHandler_MW( MW_OPERATION, MW_BATTLEZONEINFO_ANS, Handler_MW::OnMW_BATTLEZONEINFO_ANS ) )
		return FALSE;
	if( !AddHandler_MW( MW_OPERATION, MW_USERMONEY_SYN, Handler_MW::OnMW_USERMONEY_SYN ) )
		return FALSE;
	if( !AddHandler_MW( MW_ARMORKIT, MW_ARMORKIT_FINDHACK_SYN, Handler_MW::OnMW_ARMORKIT_FINDHACK_SYN ) )
		return FALSE;
	if( !AddHandler_MW( SERVERCOMMON, SERVERCOMMON_SERVERSHUTDOWN_ANS, Handler_MW::OnSERVERCOMMON_SERVERSHUTDOWN_ANS) )
		return FALSE;

	return TRUE;
}

// 坷欺饭捞泼 辑滚肺何磐 坷绰 菩哦 殿废
BOOL PacketHandler::RegisterHandler_MO()
{
	if( !AddHandler_MO( MO_OPERATION, MO_RTTG_CERTIFY_ANS, Handler_MO::OnMO_RTTG_CERTIFY_ANS ) )
		return FALSE;
	if( !AddHandler_MO( MO_OPERATION, MO_RTTG_GAMENOTICE_REQ, Handler_MO::OnMO_RTTG_GAMENOTICE_REQ ) )
		return FALSE;
	if( !AddHandler_MO( MO_OPERATION, MO_RTTG_GAMEADMINLIST_ANS, Handler_MO::OnMO_RTTG_GAMEADMINLIST_ANS ) )
		return FALSE;
	if( !AddHandler_MO( MO_OPERATION, MO_RTTG_BATTLEZONEINFO_REQ, Handler_MO::OnMO_RTTG_BATTLEZONEINFO_REQ ) )
		return FALSE;
	if( !AddHandler_MO( MO_OPERATION, MO_RTTG_USERMONEY_REQ, Handler_MO::OnMO_RTTG_USERMONEY_REQ ) )
		return FALSE;
	if( !AddHandler_MO( MO_OPERATION, MO_RTTG_SERVERSHUTDOWN_REQ, Handler_MO::OnMO_RTTG_SERVERSHUTDOWN_REQ ) )
		return FALSE;
/*
	if( !AddHandler_MO( MO_OPERATION, MO_RELOAD_DATA_SYN, Handler_MO::OnMO_RELOAD_DATA_SYN ) )
		return FALSE;
	*/

	return TRUE;
}

BOOL PacketHandler::RegisterHandler_MZ()
{
	if( !AddHandler_MZ( SERVERCOMMON, SERVERCOMMON_SERVERSHUTDOWN_ANS, Handler_MZ::OnSERVERCOMMON_SERVERSHUTDOWN_ANS ) )
		return FALSE;
	return TRUE;
}




// Game DB Proxy甫 困茄 菩哦 勤甸矾
BOOL PacketHandler::AddHandler_DM( BYTE category, BYTE protocol, PacketHandler::fnHandler_DM fnHandler )
{
	FUNC_DM *pFuncInfo	= new FUNC_DM;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_DM->Add( pFuncInfo );
}

// Account DB Proxy甫 困茄 菩哦 勤甸矾
BOOL PacketHandler::AddHandler_MX( BYTE category, BYTE protocol, PacketHandler::fnHandler_MX fnHandler )
{
	FUNC_MX *pFuncInfo	= new FUNC_MX;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_MX->Add( pFuncInfo );
}

// 霸烙 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::AddHandler_GM( BYTE category, BYTE protocol, PacketHandler::fnHandler_GM fnHandler )
{
	FUNC_GM *pFuncInfo	= new FUNC_GM;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_GM->Add( pFuncInfo );
}

// 硅撇 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::AddHandler_BM( BYTE category, BYTE protocol, PacketHandler::fnHandler_BM fnHandler )
{
	FUNC_BM *pFuncInfo	= new FUNC_BM;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_BM->Add( pFuncInfo );
}

// 鞘靛 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::AddHandler_FM( BYTE category, BYTE protocol, PacketHandler::fnHandler_FM fnHandler )
{
	FUNC_FM *pFuncInfo	= new FUNC_FM;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_FM->Add( pFuncInfo );
}

// 俊捞傈飘 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::AddHandler_AM( BYTE category, BYTE protocol, PacketHandler::fnHandler_AM fnHandler )
{
	FUNC_AM *pFuncInfo	= new FUNC_AM;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_AM->Add( pFuncInfo );
}

// 岿靛 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::AddHandler_MW( BYTE category, BYTE protocol, PacketHandler::fnHandler_MW fnHandler )
{
	FUNC_MW *pFuncInfo	= new FUNC_MW;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_MW->Add( pFuncInfo );
}

// 坷欺饭捞泼 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::AddHandler_MO( BYTE category, BYTE protocol, PacketHandler::fnHandler_MO fnHandler )
{
	FUNC_MO *pFuncInfo	= new FUNC_MO;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_MO->Add( pFuncInfo );
}

// 辨靛 辑滚甫 困茄 菩哦 勤甸矾 眠啊
BOOL PacketHandler::AddHandler_MZ( BYTE category, BYTE protocol, PacketHandler::fnHandler_MZ fnHandler )
{
	FUNC_MZ *pFuncInfo	= new FUNC_MZ;

	pFuncInfo->m_dwFunctionKey	= MAKEWORD( category, protocol );
	pFuncInfo->m_fnHandler		= fnHandler;

	return m_pFuncMap_MZ->Add( pFuncInfo );
}





BOOL PacketHandler::ParsePacket_DM( GameDBProxySession *pGameDBProxySession, MSG_BASE * pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_DM *pFuncInfo = (FUNC_DM*)m_pFuncMap_DM->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		MessageOut( eCRITICAL_LOG, "Invalid packet from game DB proxy! : Category[%d]Protocol[%d]",pMsg->m_byCategory, pMsg->m_byProtocol );
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pGameDBProxySession, pMsg, wSize );

	return TRUE;
}

BOOL PacketHandler::ParsePacket_MX( AccountDBProxySession *pAccountDBProxySession, MSG_BASE * pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_MX *pFuncInfo = (FUNC_MX*)m_pFuncMap_MX->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		MessageOut( eCRITICAL_LOG, "Invalid packet from account DB proxy! : Category[%d]Protocol[%d]", pMsg->m_byCategory, pMsg->m_byProtocol );
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pAccountDBProxySession, pMsg, wSize );

	return TRUE;
}

// 霸烙 辑滚肺何磐 坷绰 菩哦 颇教
BOOL PacketHandler::ParsePacket_GM( GameServerSession *pGameServerSession, MSG_BASE * pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_GM *pFuncInfo = (FUNC_GM*)m_pFuncMap_GM->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		MessageOut( eCRITICAL_LOG, "Invalid packet from game server! : Category[%d]Protocol[%d]", pMsg->m_byCategory, pMsg->m_byProtocol );
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pGameServerSession, pMsg, wSize );

	return TRUE;
}


// 硅撇 辑滚肺何磐 坷绰 菩哦 颇教
BOOL PacketHandler::ParsePacket_BM( BattleServerSession *pBattleServerSession, MSG_BASE * pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_BM *pFuncInfo = (FUNC_BM*)m_pFuncMap_BM->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pBattleServerSession, pMsg, wSize );

	return TRUE;
}


// 鞘靛 辑滚肺何磐 坷绰 菩哦 颇教
BOOL PacketHandler::ParsePacket_FM( FieldServerSession *pFieldServerSession, MSG_BASE * pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_FM *pFuncInfo = (FUNC_FM*)m_pFuncMap_FM->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pFieldServerSession, pMsg, wSize );

	return TRUE;
}

// 俊捞傈飘 辑滚肺何磐 坷绰 菩哦 颇教
BOOL PacketHandler::ParsePacket_AM( AgentServerSession *pAgentServerSession, MSG_BASE *pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_AM *pFuncInfo = (FUNC_AM*)m_pFuncMap_AM->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pAgentServerSession, pMsg, wSize );

	return TRUE;
}

// 岿靛 辑滚肺何磐 坷绰 菩哦 颇教
BOOL PacketHandler::ParsePacket_MW( WorldServerSession *pWorldServerSession, MSG_BASE *pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_MW *pFuncInfo = (FUNC_MW*)m_pFuncMap_MW->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pWorldServerSession, pMsg, wSize );

	return TRUE;
}

// 坷欺饭捞泼 辑滚肺何磐 坷绰 菩哦 颇教
BOOL PacketHandler::ParsePacket_MO( OpServerSession *pOpServerSession, MSG_BASE *pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_MO *pFuncInfo = (FUNC_MO*)m_pFuncMap_MO->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pOpServerSession, pMsg, wSize );

	return TRUE;
}

BOOL PacketHandler::ParsePacket_MZ( GuildServerSession *pGuildServerSession, MSG_BASE *pMsg, WORD wSize )
{
	//墨抛绊府俊 蝶扼 鞠龋拳 秦刀贸府
	if( pMsg->m_byCategory == 0xff )
	{
		// ......秦刀
		// 秦刀茄 单捞磐俊辑 墨抛绊府客 菩哦鸥涝 眠免 : byPacketCategory,byPacketType
	}

	FUNC_MZ *pFuncInfo = (FUNC_MZ*)m_pFuncMap_MZ->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );

	if( pFuncInfo == NULL )
	{
		return FALSE;
	}

	pFuncInfo->m_fnHandler( pGuildServerSession, pMsg, wSize );

	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -