void PacketLogger::FormatLine( char* into, const char* dir, const char* type, unsigned int packet, unsigned int frame, unsigned char id , const BitSize_t bitLen, unsigned long long time, const SystemAddress& local, const SystemAddress& remote, unsigned int splitPacketId, unsigned int splitPacketIndex, unsigned int splitPacketCount, unsigned int orderingIndex) { char numericID[16]; const char* idToPrint = NULL; if(printId) { if (splitPacketCount>0) idToPrint="(SPLIT PACKET)"; else idToPrint = IDTOString(id); } // If printId is false, idToPrint will be NULL, as it will // in the case of an unrecognized id. Testing printId for false // would just be redundant. if(idToPrint == NULL) { sprintf(numericID, "%5u", id); idToPrint = numericID; } FormatLine(into, dir, type, packet, frame, idToPrint, bitLen, time, local, remote,splitPacketId,splitPacketIndex,splitPacketCount, orderingIndex); }
void PacketLogger::OnDirectSocketReceive(const char *data, const unsigned bitsUsed, PlayerID remoteSystemID) { char str[256]; PlayerID localPlayerId; localPlayerId = rakPeer->GetInternalID(); if (printId==false) { sprintf(str, "Rcv,Raw, NIL, NIL,%5i,%5i,%i,%u:%i,%u:%i\n", data[0], bitsUsed,RakNet::GetTime(), localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } else { sprintf(str, "Rcv,Raw,NIL,NIL,%s,%i,%i,%u:%i,%u:%i\n", IDTOString(data[0]), bitsUsed,RakNet::GetTime(), localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } WriteLog(str); }
void PacketLogger::OnInternalPacket(InternalPacket *internalPacket, unsigned frameNumber, PlayerID remoteSystemID, RakNetTime time, bool isSend) { char str[256]; char sendType[4]; PlayerID localPlayerId; localPlayerId = rakPeer->GetInternalID(); if (isSend) strcpy(sendType, "Snd"); else strcpy(sendType, "Rcv"); // TODO - put this back in a different form /* if (internalPacket->isAcknowledgement) { if (printAcks) { if (printId==false) sprintf(str, "%s,Ack,%5i,%5i, NIL, 1,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); else sprintf(str, "%s,Ack,%i,%i,NIL,1,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } else str[0]=0; } else */ { if (internalPacket->data[0]==ID_TIMESTAMP && internalPacket->data[sizeof(unsigned char)+sizeof(RakNetTime)]!=ID_RPC) { if (printId==false) { sprintf(str, "%s,Tms,%5i,%5i,%5i,%5i,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber, internalPacket->data[1+sizeof(int)], internalPacket->dataBitLength,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } else { sprintf(str, "%s,Tms,%i,%i,%s,%i,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber, IDTOString(internalPacket->data[1+sizeof(int)]), internalPacket->dataBitLength,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } } else if (internalPacket->data[0]==ID_RPC || (internalPacket->dataBitLength>(sizeof(unsigned char)+sizeof(RakNetTime))*8 && internalPacket->data[0]==ID_TIMESTAMP && internalPacket->data[sizeof(unsigned char)+sizeof(RakNetTime)]==ID_RPC)) { bool hasTimestamp; unsigned int bitsOfData; bool nameIsEncoded; unsigned char uniqueIdentifier[256]; RPCIndex rpcIndex; RPCMap *rpcMap; RakNet::BitStream rpcDecode(internalPacket->data, BITS_TO_BYTES(internalPacket->dataBitLength), false); rpcDecode.IgnoreBits(8); if (internalPacket->data[0]==ID_TIMESTAMP) rpcDecode.IgnoreBits(sizeof(unsigned char)+sizeof(RakNetTime)); rpcDecode.Read(nameIsEncoded); if (nameIsEncoded) { stringCompressor->DecodeString((char*)uniqueIdentifier, 256, &rpcDecode); } else { rpcDecode.ReadCompressed( rpcIndex ); RPCNode *rpcNode; rpcMap = rakPeer->GetRPCMap(isSend==true ? remoteSystemID : UNASSIGNED_PLAYER_ID); if (rpcMap) rpcNode = rpcMap->GetNodeFromIndex(rpcIndex); else rpcNode=0; if (rpcMap && rpcNode) strcpy((char*)uniqueIdentifier, rpcNode->uniqueIdentifier); else strcpy((char*)uniqueIdentifier, "[UNKNOWN]"); } rpcDecode.Read(hasTimestamp); rpcDecode.ReadCompressed(bitsOfData); if (hasTimestamp) sprintf(str, "%s,RpT,%5i,%5i,%s,%5i,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber, uniqueIdentifier, internalPacket->dataBitLength,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); else sprintf(str, "%s,Rpc,%5i,%5i,%s,%5i,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber, uniqueIdentifier, internalPacket->dataBitLength,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } else { if (printId==false) { sprintf(str, "%s,Nrm,%5i,%5i,%5i,%5i,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber, internalPacket->data[0], internalPacket->dataBitLength,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } else { sprintf(str, "%s,Nrm,%i,%i,%s,%i,%i,%u:%i,%u:%i\n",sendType, internalPacket->messageNumber,frameNumber, IDTOString(internalPacket->data[0]), internalPacket->dataBitLength,time, localPlayerId.binaryAddress, localPlayerId.port, remoteSystemID.binaryAddress, remoteSystemID.port); } } } WriteLog(str); }