packetfactorymanager.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 231 行

CPP
231
字号
//--------------------------------------------------------------------------------// // Filename    : PacketFactoryManager.cpp // Written By  : Reiot// //--------------------------------------------------------------------------------// include files#include "Assert.h"#include "PacketFactoryManager.h"#include "StringStream.h"#include "TOpackets/GTOAcknowledgement.h"////////////////////////////////////////////////////////////////////////// constructor////////////////////////////////////////////////////////////////////////PacketFactoryManager::PacketFactoryManager () 	throw (): m_Factories(NULL) , m_Size(Packet::PACKET_MAX){	__BEGIN_TRY	Assert(m_Size > 0);		// 菩哦蒲配府硅凯阑 积己茄促.	m_Factories = new PacketFactory*[ m_Size ];		// 蒲配府俊 措茄 器牢磐甸阑 NULL 肺 檬扁拳茄促.	for (int i = 0 ; i < m_Size ; i ++) 		m_Factories[i] = NULL;				__END_CATCH}	////////////////////////////////////////////////////////////////////////// destructor////////////////////////////////////////////////////////////////////////PacketFactoryManager::~PacketFactoryManager () 	throw (){	__BEGIN_TRY			Assert(m_Factories != NULL);	// 阿阿狼 菩哦蒲配府甸阑 昏力茄促.	for (int i = 0 ; i < m_Size ; i ++) 	{#ifdef __GAME_CLIENT__		if (m_Factories[i] != NULL)		{			delete m_Factories[i];			m_Factories[i] = NULL;		}#else		SAFE_DELETE(m_Factories[i]);#endif	}		// 菩哦蒲配府硅凯阑 昏力茄促.#ifdef __GAME_CLIENT__	if (m_Factories != NULL)	{		delete [] m_Factories;		m_Factories = NULL;	}#else	SAFE_DELETE_ARRAY(m_Factories);#endif				__END_CATCH}////////////////////////////////////////////////////////////////////////// 沥狼等 葛电 菩哦蒲配府甸阑 咯扁俊 眠啊茄促.////////////////////////////////////////////////////////////////////////void PacketFactoryManager::init ()	 throw (Error){	__BEGIN_TRY			addFactory( new GTOAcknowledgementFactory() );#if __OUTPUT_INIT__	cout << toString() << endl;#endif		__END_CATCH}////////////////////////////////////////////////////////////////////////// 蒲配府 按眉甫 漂沥 牢郸胶俊 眠啊茄促.////////////////////////////////////////////////////////////////////////void PacketFactoryManager::addFactory (PacketFactory * pFactory) 	 throw (Error){	__BEGIN_TRY			if (m_Factories[ pFactory->getPacketID() ] != NULL) {		StringStream msg;#ifdef __GAME_CLIENT__	#ifdef __DEBUG_OUTPUT__		msg << "duplicate packet factories, " << pFactory->getPacketName() ;	#else			msg << "duplicate packet factories ";	#endif#else		msg << "duplicate packet factories, " << pFactory->getPacketName() ;#endif		throw Error(msg.toString());	}		// 菩哦蒲配府甫 殿废茄促.	m_Factories[ pFactory->getPacketID() ] = pFactory;				__END_CATCH}	////////////////////////////////////////////////////////////////////////// 菩哦酒捞叼肺 菩哦按眉甫 积己茄促.////////////////////////////////////////////////////////////////////////Packet * PacketFactoryManager::createPacket (PacketID_t packetID) 	   throw (InvalidProtocolException , Error){	__BEGIN_TRY	// 菩哦 酒捞叼啊 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废.	// 捞繁 荤侩磊绰 寸厘 漏扼具 茄促.	if (packetID >= m_Size || m_Factories[packetID] == NULL) {		StringStream msg;		msg << "packet factory [" << packetID << "] not exist.";		throw InvalidProtocolException(msg.toString());	}	return m_Factories[packetID]->createPacket();				__END_CATCH}////////////////////////////////////////////////////////////////////////// 菩哦酒捞叼肺 漂沥 菩哦狼 弥措 农扁甫 府畔茄促.////////////////////////////////////////////////////////////////////////PacketSize_t PacketFactoryManager::getPacketMaxSize (PacketID_t packetID) 	   throw (InvalidProtocolException , Error){	__BEGIN_TRY	// 菩哦 酒捞叼啊 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废.	// 捞繁 荤侩磊绰 寸厘 漏扼具 茄促.	if (packetID >= m_Size || m_Factories[packetID] == NULL) {		StringStream msg;		msg << "invalid packet id(" << packetID << ")";		throw InvalidProtocolException(msg.toString());	}	return m_Factories[packetID]->getPacketMaxSize();				__END_CATCH}////////////////////////////////////////////////////////////////////////// 菩哦酒捞叼肺 漂沥 菩哦狼 捞抚阑 府畔茄促.////////////////////////////////////////////////////////////////////////#if !defined(__GAME_CLIENT__) || defined(__GAME_CLIENT__) && defined(__DEBUG_OUTPUT__)string PacketFactoryManager::getPacketName (PacketID_t packetID) 	   throw (InvalidProtocolException , Error){	__BEGIN_TRY	// 菩哦 酒捞叼啊 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废.	// 捞繁 荤侩磊绰 寸厘 漏扼具 茄促.	if (packetID >= m_Size || m_Factories[packetID] == NULL) {		StringStream msg;		msg << "invalid packet id(" << packetID << ")";		throw InvalidProtocolException(msg.toString());	}	return m_Factories[packetID]->getPacketName();				__END_CATCH}//////////////////////////////////////////////////////////////////////// get debug string//////////////////////////////////////////////////////////////////////string PacketFactoryManager::toString () const	throw (){	__BEGIN_TRY	StringStream msg;	msg << "PacketFactoryManager(\n";	for (int i = 0 ; i < m_Size ; i ++)		msg << "PacketFactories[" << i << "] == " << (m_Factories[i] == NULL ? "NULL" : m_Factories[i]->getPacketName()) << "\n";	msg << ")";	return msg.toString();	__END_CATCH}#endif//////////////////////////////////////////////////// global variable declaration//////////////////////////////////////////////////PacketFactoryManager * g_pPacketFactoryManager = NULL;

⌨️ 快捷键说明

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