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 + -
显示快捷键?