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

📄 sharedserverclient.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : GamePlyaer.cpp // Written By  : reiot@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "SharedServerClient.h"#include "Assert.h"#include "PacketFactoryManager.h"#include "PacketValidator.h"#include "GuildManager.h"#include "Guild.h"#include <fstream>//////////////////////////////////////////////////////////////////////////////// 葛电 packet甸俊 措秦辑 profiling茄促. by sigi. 2002.5.6//// 窜, 捞吧 荤侩窍扁 困秦辑绰 // Profile.h俊 MAX_PROFILE_SAMPLES += 300阑 秦拎具 茄促.////////////////////////////////////////////////////////////////////////////////#define __PROFILE_PACKETS__//////////////////////////////////////////////////////////////////////////////// constructor//////////////////////////////////////////////////////////////////////////////SharedServerClient::SharedServerClient (Socket* pSocket)	 throw (Error): Player(pSocket){	__BEGIN_TRY	m_Mutex.setName("SharedServerClient");	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// destructor//////////////////////////////////////////////////////////////////////////////SharedServerClient::~SharedServerClient ()	 throw (Error){	__BEGIN_TRY	__END_CATCH}////////////////////////////////////////////////////////////////////////// parse packet and execute handler for the packet////////////////////////////////////////////////////////////////////////void SharedServerClient::processCommand ()      throw (IOException , Error){	__BEGIN_TRY	// 庆歹甫 烙矫历厘且 滚欺 积己	char header[szPacketHeader];	PacketID_t packetID;	PacketSize_t packetSize;	Packet* pPacket = NULL;	try {		// 涝仿滚欺俊 甸绢乐绰 肯傈茄 菩哦甸阑 葛炼府 贸府茄促.		while (true) 		{			// 涝仿胶飘覆俊辑 菩哦庆歹农扁父怒 佬绢夯促.			// 父距 瘤沥茄 农扁父怒 胶飘覆俊辑 佬阑 荐 绝促搁,			// Insufficient 抗寇啊 惯积窍绊, 风橇甫 狐廉唱埃促.			// NoSuch力芭. by sigi. 2002.5.4			if (!m_pInputStream->peek(&header[0] , szPacketHeader))			{				break;			}						// 菩哦酒捞叼 棺 菩哦农扁甫 舅酒辰促.			// 捞锭 菩哦农扁绰 庆歹甫 器窃茄促.			memcpy(&packetID   , &header[0] , szPacketID);				memcpy(&packetSize , &header[szPacketID] , szPacketSize);			// 菩哦 酒捞叼啊 捞惑窍搁 橇肺配妮 俊矾肺 埃林茄促.			if (packetID >= (int)Packet::PACKET_MAX)			{				filelog("SharedServerClient.txt", "Packet ID exceed MAX, RECV [%d/%d]" );				throw InvalidProtocolException("too large packet id");			}			try 			{				// 菩哦 农扁啊 呈公 农搁 橇肺配妮 俊矾肺 埃林茄促.				if (packetSize > g_pPacketFactoryManager->getPacketMaxSize(packetID))				{					filelog("SharedServerClient.txt", "Too Larget Packet Size, RECV [%d],PacketSize[%d]" );					throw InvalidProtocolException("too large packet size");				}							// 涝仿滚欺郴俊 菩哦农扁父怒狼 单捞鸥啊 甸绢乐绰瘤 犬牢茄促.				if (m_pInputStream->length() < szPacketHeader + packetSize)					break;				// 咯扁鳖瘤 吭促搁 涝仿滚欺俊绰 肯傈茄 菩哦 窍唱 捞惑捞 甸绢乐促绰 舵捞促.				// 菩哦蒲配府概聪历肺何磐 菩哦酒捞叼甫 荤侩秦辑 菩哦 胶飘钒贸甫 积己窍搁 等促.				// 菩哦酒捞叼啊 肋给瞪 版快绰 菩哦蒲配府概聪历俊辑 贸府茄促.				pPacket = g_pPacketFactoryManager->createPacket(packetID);				// 捞力 捞 菩哦胶飘钒贸甫 檬扁拳茄促.				// 菩哦窍困努贰胶俊 沥狼等 read()啊 virtual 皋目聪硫俊 狼秦辑 龋免登绢				// 磊悼利栏肺 檬扁拳等促.				m_pInputStream->readPacket(pPacket);				// 捞力 捞 菩哦胶飘钒贸甫 啊瘤绊 菩哦勤甸矾甫 荐青窍搁 等促.				// 菩哦酒捞叼啊 肋给瞪 版快绰 菩哦勤甸矾概聪历俊辑 贸府茄促.				#ifdef __PROFILE_PACKETS__										beginProfileEx(	pPacket->getPacketName().c_str() );					pPacket->execute(this);					endProfileEx( pPacket->getPacketName().c_str() );				#else					pPacket->execute(this);				#endif			} 			catch (IgnorePacketException & igpe) 			{				// 菩哦 农扁啊 呈公 农搁 橇肺配妮 俊矾肺 埃林茄促.				if (packetSize > g_pPacketFactoryManager->getPacketMaxSize(packetID))					throw InvalidProtocolException("too large packet size");							// 涝仿滚欺郴俊 菩哦农扁父怒狼 单捞鸥啊 甸绢乐绰瘤 犬牢茄促.				if (m_pInputStream->length() < szPacketHeader + packetSize)					break;				// 单捞鸥啊 葛滴 档馒沁栏搁, 弊 农扁父怒 公矫窍绊,				// 促弗 菩哦阑 贸府窍档废 茄促....				m_pInputStream->skip(szPacketHeader + packetSize);				// 公矫等 菩哦篮, expire 俊 康氢阑 林瘤 臼霸 等促.				// 溜 蜡瓤茄 菩哦父捞 漏府瘤 臼霸 秦霖促.				// 肚茄 洒胶配府俊档 甸绢啊瘤 臼绰促.			}		}	} 	catch ( InsufficientDataException& ide )	{	}	__END_CATCH}		    ////////////////////////////////////////////////////////////////////////// flush output buffer to socket's send buffer//// flush且 悼救 促弗 静饭靛俊辑 免仿 滚欺俊 sendPacket阑 龋免秦辑绰 救等促.// (捞凡 版快绰 辑滚埃 烹脚栏肺 say啊 朝酒坷绰 巴观俊 绝促.)////////////////////////////////////////////////////////////////////////void SharedServerClient::processOutput ()      throw (IOException , Error){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	try 	{		Player::processOutput();	} 	catch (InvalidProtocolException & It) 	{		throw DisconnectException("Pipe 楷搬狼 颇鲍肺 立加阑 楼弗促");	}	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}////////////////////////////////////////////////////////////////////////// send packet to player's output buffer////////////////////////////////////////////////////////////////////////void SharedServerClient::sendPacket (Packet* pPacket) 	 throw (ProtocolException , Error){		__BEGIN_TRY		__ENTER_CRITICAL_SECTION(m_Mutex)	try 	{		Player::sendPacket(pPacket);	} 	catch (InvalidProtocolException & It) 	{	}	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////string SharedServerClient::toString () const       throw (Error){	__BEGIN_TRY			StringStream msg;		//////////////////////////////////////////////////	// enter critical section	//////////////////////////////////////////////////	__ENTER_CRITICAL_SECTION(m_Mutex)		msg << "SharedServerClient(SocketID:" << m_pSocket->getSOCKET() << ",Host:" << m_pSocket->getHost() << ")" ;	//////////////////////////////////////////////////	// leave critical section	//////////////////////////////////////////////////	__LEAVE_CRITICAL_SECTION(m_Mutex)		return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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