示例#1
0
文件: g2node.cpp 项目: geekt/quazaa
void CG2Node::OnPacket(G2Packet* pPacket)
{
	//qDebug() << "Got packet " << pPacket->GetType() << pPacket->ToHex() << pPacket->ToASCII();

	//try
	//{
        if( !Network.RoutePacket(pPacket) )
        {

            if( pPacket->IsType("PI") )
            {
                OnPing(pPacket);
            }
            else if( pPacket->IsType("PO") )
            {
                OnPong(pPacket);
            }
            else if( pPacket->IsType("LNI") )
            {
                OnLNI(pPacket);
            }
            else if( pPacket->IsType("KHL") )
            {
                OnKHL(pPacket);
            }
            else if( pPacket->IsType("QHT") )
            {
                //OnQHT(pPacket);
            }
            else if( pPacket->IsType("Q2") )
            {
				OnQuery(pPacket);
            }
			else if( pPacket->IsType("QKR") )
			{
				OnQKR(pPacket);
			}
            else if( pPacket->IsType("QKA") )
            {
                OnQKA(pPacket);
            }
            else if( pPacket->IsType("QA") )
            {
                OnQA(pPacket);
            }
            else if( pPacket->IsType("QH2") )
            {
                OnQH2(pPacket);
            }
            else
            {
                qDebug() << "Unknown packet " << pPacket->GetType();
            }
        }
	/*}
    catch(...)
    {
        qDebug() << "Packet error in child packets";
	}*/
}
PluginReceiveResult LightweightDatabaseServer::OnReceive(Packet *packet)
	{
	switch (packet->data[0])
		{
		case ID_DATABASE_QUERY_REQUEST:
			OnQueryRequest(packet);
			return RR_STOP_PROCESSING_AND_DEALLOCATE;
		case ID_DATABASE_UPDATE_ROW:
			OnUpdateRow(packet);
			return RR_STOP_PROCESSING_AND_DEALLOCATE;
		case ID_DATABASE_REMOVE_ROW:
			OnRemoveRow(packet);
			return RR_STOP_PROCESSING_AND_DEALLOCATE;
		case ID_PONG:
			OnPong(packet);
			return RR_CONTINUE_PROCESSING;
		}
	return RR_CONTINUE_PROCESSING;
	}
PluginReceiveResult LightweightDatabaseServer::OnReceive(RakPeerInterface *peer, Packet *packet)
{
	switch (packet->data[0]) 
	{
	case ID_DATABASE_QUERY_REQUEST:
		OnQueryRequest(peer, packet);
		return RR_STOP_PROCESSING_AND_DEALLOCATE;
	case ID_DATABASE_UPDATE_ROW:
		OnUpdateRow(peer, packet);
		return RR_STOP_PROCESSING_AND_DEALLOCATE;
	case ID_DATABASE_REMOVE_ROW:
		OnRemoveRow(peer, packet);
		return RR_STOP_PROCESSING_AND_DEALLOCATE;
	case ID_DISCONNECTION_NOTIFICATION:
	case ID_CONNECTION_LOST:
		RemoveRowsFromIP(packet->playerId);
		return RR_CONTINUE_PROCESSING;
	case ID_PONG:
		OnPong(peer, packet);
		return RR_CONTINUE_PROCESSING;
	}
	return RR_CONTINUE_PROCESSING;
}