packetvalidator.cpp

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

CPP
392
字号
		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( LPS_WAITING_FOR_CL_GET_PC_LIST );		pPacketIDSet->addPacketID( Packet::PACKET_CL_GET_PC_LIST );		pPacketIDSet->addPacketID( Packet::PACKET_CL_GET_WORLD_LIST );		pPacketIDSet->addPacketID( Packet::PACKET_CL_GET_SERVER_LIST );		pPacketIDSet->addPacketID( Packet::PACKET_CL_SELECT_WORLD );		pPacketIDSet->addPacketID( Packet::PACKET_CL_SELECT_SERVER );		pPacketIDSet->addPacketID( Packet::PACKET_CL_SELECT_PC );		pPacketIDSet->addPacketID( Packet::PACKET_CL_QUERY_CHARACTER_NAME );		pPacketIDSet->addPacketID( Packet::PACKET_CL_CREATE_PC );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );			//----------------------------------------------------------------------		// LPS_WAITING_FOR_CL_REGISTER_PLAYER		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( LPS_WAITING_FOR_CL_REGISTER_PLAYER );		pPacketIDSet->addPacketID( Packet::PACKET_CL_REGISTER_PLAYER );		pPacketIDSet->addPacketID( Packet::PACKET_CL_QUERY_PLAYER_ID );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );			//----------------------------------------------------------------------		// LPS_PC_MANAGEMENT		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( LPS_PC_MANAGEMENT );		pPacketIDSet->addPacketID( Packet::PACKET_CL_GET_PC_LIST );		pPacketIDSet->addPacketID( Packet::PACKET_CL_SELECT_WORLD );		pPacketIDSet->addPacketID( Packet::PACKET_CL_SELECT_SERVER );		pPacketIDSet->addPacketID( Packet::PACKET_CL_SELECT_PC );		pPacketIDSet->addPacketID( Packet::PACKET_CL_GET_WORLD_LIST );		pPacketIDSet->addPacketID( Packet::PACKET_CL_GET_SERVER_LIST );		pPacketIDSet->addPacketID( Packet::PACKET_CL_QUERY_CHARACTER_NAME );		pPacketIDSet->addPacketID( Packet::PACKET_CL_CREATE_PC );		pPacketIDSet->addPacketID( Packet::PACKET_CL_DELETE_PC );		pPacketIDSet->addPacketID( Packet::PACKET_CL_LOGOUT );		pPacketIDSet->addPacketID( Packet::PACKET_CL_CHANGE_SERVER );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );			//----------------------------------------------------------------------		// LPS_AFTER_SENDING_LG_INCOMING_CONNECTION		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( LPS_AFTER_SENDING_LG_INCOMING_CONNECTION , PacketIDSet::PIST_IGNORE_EXCEPT );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );		//----------------------------------------------------------------------		// LPS_AFTER_SENDING_LG_INCOMING_CONNECTION		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( LPS_WAITING_FOR_GL_KICK_VERIFY , PacketIDSet::PIST_IGNORE_EXCEPT );		pPacketIDSet->addPacketID( Packet::PACKET_GL_KICK_VERIFY );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );		//----------------------------------------------------------------------		// LPS_END_SESSION		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( LPS_END_SESSION , PacketIDSet::PIST_NONE );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );#elif defined(__GAME_SERVER__)		//----------------------------------------------------------------------		// GPS_NONE		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( GPS_NONE , PacketIDSet::PIST_NONE );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );		//----------------------------------------------------------------------		// GPS_BEGIN_SESSION		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( GPS_BEGIN_SESSION );		pPacketIDSet->addPacketID( Packet::PACKET_CG_CONNECT );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );		//----------------------------------------------------------------------		// GPS_WAITING_FOR_CG_READY		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( GPS_WAITING_FOR_CG_READY , PacketIDSet::PIST_IGNORE_EXCEPT );		pPacketIDSet->addPacketID( Packet::PACKET_CG_READY );		pPacketIDSet->addPacketID( Packet::PACKET_CG_SET_SLAYER_HOT_KEY );		pPacketIDSet->addPacketID( Packet::PACKET_CG_SET_VAMPIRE_HOT_KEY );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );		//----------------------------------------------------------------------		// GPS_NORMAL ( 肺爹阑 付摹绊 霸烙俊 甸绢啊扁 官肺傈 )		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( GPS_NORMAL , PacketIDSet::PIST_ANY );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );		//----------------------------------------------------------------------		// GPS_IGNORE_ALL ( 酒公 菩哦档 罐瘤 臼绊 促 公矫窍绰 惑怕促.. fucksuck)		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( GPS_IGNORE_ALL , PacketIDSet::PIST_IGNORE_EXCEPT );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );		//----------------------------------------------------------------------		// GPS_AFTER_SENDING_GL_INCOMING_CONNECTION		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( GPS_AFTER_SENDING_GL_INCOMING_CONNECTION , PacketIDSet::PIST_IGNORE_EXCEPT );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );			//----------------------------------------------------------------------		// GPS_END_SESSION		//----------------------------------------------------------------------		pPacketIDSet = new PacketIDSet( GPS_END_SESSION , PacketIDSet::PIST_NONE );		addPacketIDSet( pPacketIDSet->getPlayerStatus(), pPacketIDSet );#endif	__END_DEBUG	__END_CATCH}//----------------------------------------------------------------------// add packet id set//----------------------------------------------------------------------void PacketValidator::addPacketIDSet ( PlayerStatus playerStatus , PacketIDSet * pPacketIDSet ) 	throw ( DuplicatedException , Error ){	__BEGIN_TRY	if ( playerStatus >= PLAYER_STATUS_MAX )		throw Error("invalid player status");	if ( m_PacketIDSets[playerStatus] != NULL )		throw DuplicatedException();	m_PacketIDSets[playerStatus] = pPacketIDSet;	__END_CATCH}//----------------------------------------------------------------------// delete packet id set//----------------------------------------------------------------------void PacketValidator::deletePacketIDSet ( PlayerStatus playerStatus , PacketIDSet * pPacketIDSet ) 	throw ( NoSuchElementException , Error ){	__BEGIN_TRY	if ( playerStatus >= PLAYER_STATUS_MAX )		throw Error("invalid player status");	if ( m_PacketIDSets[playerStatus] == NULL )		throw NoSuchElementException("invalid player status");	m_PacketIDSets[playerStatus] = NULL;	__END_CATCH}//----------------------------------------------------------------------// is valid packet?//----------------------------------------------------------------------bool PacketValidator::isValidPacketID ( PlayerStatus playerStatus , PacketID_t packetID ) 	throw ( NoSuchElementException , IgnorePacketException , Error ){	__BEGIN_TRY	if ( playerStatus >= PLAYER_STATUS_MAX )		throw Error("invalid player status");	if ( m_PacketIDSets[playerStatus] == NULL )		throw NoSuchElementException("invalid player status");	return m_PacketIDSets[playerStatus]->hasPacketID(packetID);	__END_CATCH}//----------------------------------------------------------------------// get debug string//----------------------------------------------------------------------string PacketValidator::toString () const	throw (){	StringStream msg;	msg << "PacketValidator(\n";	for ( uint i = 0 ; i < PLAYER_STATUS_MAX ; i ++ )	{		msg << i << " : ";		msg << ( ( m_PacketIDSets[i] != NULL ) ? m_PacketIDSets[i]->toString() : "NULL" );	}	msg << ")";	return msg.toString();}//----------------------------------------------------------------------// global variable definition//----------------------------------------------------------------------PacketValidator * g_pPacketValidator = NULL;

⌨️ 快捷键说明

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