SQLiteClientLogger_PacketLogger.cpp 5.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "SQLiteClientLogger_PacketLogger.h"
  2. #include "SQLiteClientLoggerPlugin.h"
  3. #include "RakPeerInterface.h"
  4. #include "InternalPacket.h"
  5. #include "MessageIdentifiers.h"
  6. using namespace RakNet;
  7. static const char *DEFAULT_PACKET_LOGGER_TABLE="PacketLogger";
  8. SQLiteClientLogger_PacketLogger::SQLiteClientLogger_PacketLogger()
  9. {
  10. }
  11. SQLiteClientLogger_PacketLogger::~SQLiteClientLogger_PacketLogger()
  12. {
  13. }
  14. void SQLiteClientLogger_PacketLogger::OnDirectSocketSend(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)
  15. {
  16. char str1[64], str2[62], str3[64], str4[64];
  17. SystemAddress localSystemAddress = rakPeerInterface->GetExternalID(remoteSystemAddress);
  18. localSystemAddress.ToString(true, str1);
  19. rakPeerInterface->GetGuidFromSystemAddress(RakNet::UNASSIGNED_SYSTEM_ADDRESS).ToString(str2);
  20. remoteSystemAddress.ToString(true, str3);
  21. rakPeerInterface->GetGuidFromSystemAddress(remoteSystemAddress).ToString(str4);
  22. rakSqlLog(DEFAULT_PACKET_LOGGER_TABLE, "SndRcv,Type,PacketNumber,FrameNumber,PacketID,BitLength,LocalIP,LocalGuid,RemoteIP,RemoteGuid,splitPacketId,SplitPacketIndex,splitPacketCount,orderingIndex,misc", \
  23. ("Snd", "Raw",0, 0, IDTOString(data[0]), bitsUsed, str1, str2, str3, str4, "","","","","") );
  24. }
  25. void SQLiteClientLogger_PacketLogger::OnDirectSocketReceive(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)
  26. {
  27. char str1[64], str2[62], str3[64], str4[64];
  28. SystemAddress localSystemAddress = rakPeerInterface->GetExternalID(remoteSystemAddress);
  29. localSystemAddress.ToString(true, str1);
  30. rakPeerInterface->GetGuidFromSystemAddress(RakNet::UNASSIGNED_SYSTEM_ADDRESS).ToString(str2);
  31. remoteSystemAddress.ToString(true, str3);
  32. rakPeerInterface->GetGuidFromSystemAddress(remoteSystemAddress).ToString(str4);
  33. rakSqlLog(DEFAULT_PACKET_LOGGER_TABLE, "SndRcv,Type,PacketNumber,FrameNumber,PacketID,BitLength,LocalIP,LocalGuid,RemoteIP,RemoteGuid,splitPacketId,SplitPacketIndex,splitPacketCount,orderingIndex,misc", \
  34. ("Rcv", "Raw", "", "", IDTOString(data[0]),bitsUsed, str1, str2, str3, str4, "","","","","") );
  35. }
  36. void SQLiteClientLogger_PacketLogger::OnInternalPacket(InternalPacket *internalPacket, unsigned frameNumber, SystemAddress remoteSystemAddress, RakNet::TimeMS time, bool isSend)
  37. {
  38. char str1[64], str2[62], str3[64], str4[64];
  39. SystemAddress localSystemAddress = rakPeerInterface->GetExternalID(remoteSystemAddress);
  40. localSystemAddress.ToString(true, str1);
  41. rakPeerInterface->GetGuidFromSystemAddress(RakNet::UNASSIGNED_SYSTEM_ADDRESS).ToString(str2);
  42. remoteSystemAddress.ToString(true, str3);
  43. rakPeerInterface->GetGuidFromSystemAddress(remoteSystemAddress).ToString(str4);
  44. unsigned char typeByte;
  45. char *typeStr;
  46. if (internalPacket->data[0]==ID_TIMESTAMP && BITS_TO_BYTES(internalPacket->dataBitLength)>sizeof(RakNet::TimeMS)+1)
  47. {
  48. typeByte=internalPacket->data[1+sizeof(RakNet::TimeMS)];
  49. typeStr="Timestamp";
  50. }
  51. else
  52. {
  53. typeByte=internalPacket->data[0];
  54. typeStr="Normal";
  55. }
  56. const char* sendType = (isSend) ? "Snd" : "Rcv";
  57. rakSqlLog(DEFAULT_PACKET_LOGGER_TABLE, "SndRcv,Type,PacketNumber,FrameNumber,PacketID,BitLength,LocalIP,LocalGuid,RemoteIP,RemoteGuid,splitPacketId,SplitPacketIndex,splitPacketCount,orderingIndex,misc", \
  58. (sendType, typeStr, internalPacket->reliableMessageNumber, frameNumber, IDTOString(typeByte), internalPacket->dataBitLength, str1, str2, str3, str4, internalPacket->splitPacketId, internalPacket->splitPacketIndex, internalPacket->splitPacketCount, internalPacket->orderingIndex,"") );
  59. }
  60. void SQLiteClientLogger_PacketLogger::OnAck(unsigned int messageNumber, SystemAddress remoteSystemAddress, RakNet::TimeMS time)
  61. {
  62. char str1[64], str2[62], str3[64], str4[64];
  63. SystemAddress localSystemAddress = rakPeerInterface->GetExternalID(remoteSystemAddress);
  64. localSystemAddress.ToString(true, str1);
  65. rakPeerInterface->GetGuidFromSystemAddress(RakNet::UNASSIGNED_SYSTEM_ADDRESS).ToString(str2);
  66. remoteSystemAddress.ToString(true, str3);
  67. rakPeerInterface->GetGuidFromSystemAddress(remoteSystemAddress).ToString(str4);
  68. rakSqlLog(DEFAULT_PACKET_LOGGER_TABLE, "SndRcv,Type,PacketNumber,FrameNumber,PacketID,BitLength,LocalIP,LocalGuid,RemoteIP,RemoteGuid,splitPacketId,SplitPacketIndex,splitPacketCount,orderingIndex,misc", \
  69. ("Rcv", "Ack",messageNumber, "", "", "", str1, str2, str3, str4, "","","","","") );
  70. }
  71. void SQLiteClientLogger_PacketLogger::OnPushBackPacket(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)
  72. {
  73. char str1[64], str2[62], str3[64], str4[64];
  74. SystemAddress localSystemAddress = rakPeerInterface->GetExternalID(remoteSystemAddress);
  75. localSystemAddress.ToString(true, str1);
  76. rakPeerInterface->GetGuidFromSystemAddress(RakNet::UNASSIGNED_SYSTEM_ADDRESS).ToString(str2);
  77. remoteSystemAddress.ToString(true, str3);
  78. rakPeerInterface->GetGuidFromSystemAddress(remoteSystemAddress).ToString(str4);
  79. rakSqlLog(DEFAULT_PACKET_LOGGER_TABLE, "SndRcv,Type,PacketNumber,FrameNumber,PacketID,BitLength,LocalIP,LocalGuid,RemoteIP,RemoteGuid,splitPacketId,SplitPacketIndex,splitPacketCount,orderingIndex,misc", \
  80. ("Local", "PushBackPacket","", "", IDTOString(data[0]), bitsUsed, str1, str2, str3, str4, "","","","","") );
  81. }
  82. void SQLiteClientLogger_PacketLogger::WriteMiscellaneous(const char *type, const char *msg)
  83. {
  84. rakSqlLog(DEFAULT_PACKET_LOGGER_TABLE, "SndRcv,Type,PacketNumber,FrameNumber,PacketID,BitLength,LocalIP,LocalGuid,RemoteIP,RemoteGuid,splitPacketId,SplitPacketIndex,splitPacketCount,orderingIndex,misc", \
  85. ("Local", type,"", "", "", "", "", "", "","","","","","",msg) );
  86. }
粤ICP备19079148号