SLikeNet  0.1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PacketLogger.h
Go to the documentation of this file.
1 /*
2  * Original work: Copyright (c) 2014, Oculus VR, Inc.
3  * All rights reserved.
4  *
5  * This source code is licensed under the BSD-style license found in the
6  * RakNet License.txt file in the licenses directory of this source tree. An additional grant
7  * of patent rights can be found in the RakNet Patents.txt file in the same directory.
8  *
9  *
10  * Modified work: Copyright (c) 2016-2018, SLikeSoft UG (haftungsbeschränkt)
11  *
12  * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
13  * license found in the license.txt file in the root directory of this source tree.
14  */
15 
19 
20 
21 #include "NativeFeatureIncludes.h"
22 #if _RAKNET_SUPPORT_PacketLogger==1
23 
24 #ifndef __PACKET_LOGGER_H
25 #define __PACKET_LOGGER_H
26 
27 #include "types.h"
28 #include "PluginInterface2.h"
29 #include "Export.h"
30 
31 namespace SLNet
32 {
34 class RakPeerInterface;
35 
40 
45 {
46 public:
47  // GetInstance() and DestroyInstance(instance*)
49 
50  PacketLogger();
51  virtual ~PacketLogger();
52 
53  // Translate the supplied parameters into an output line - overloaded version that takes a MessageIdentifier
54  // and translates it into a string (numeric or textual representation based on printId); this calls the
55  // second version which takes a const char* argument for the messageIdentifier
56  virtual void FormatLine(char* into, size_t intoLength, const char* dir, const char* type, unsigned int reliableMessageNumber, unsigned int frame
57  , unsigned char id, const BitSize_t bitLen, unsigned long long time, const SystemAddress& local, const SystemAddress& remote,
58  unsigned int splitPacketId, unsigned int splitPacketIndex, unsigned int splitPacketCount, unsigned int orderingIndex);
59  virtual void FormatLine(char* into, const char* dir, const char* type, unsigned int reliableMessageNumber, unsigned int frame
60  , unsigned char id, const BitSize_t bitLen, unsigned long long time, const SystemAddress& local, const SystemAddress& remote,
61  unsigned int splitPacketId, unsigned int splitPacketIndex, unsigned int splitPacketCount, unsigned int orderingIndex);
62  virtual void FormatLine(char* into, size_t intoLength, const char* dir, const char* type, unsigned int reliableMessageNumber, unsigned int frame
63  , const char* idToPrint, const BitSize_t bitLen, unsigned long long time, const SystemAddress& local, const SystemAddress& remote,
64  unsigned int splitPacketId, unsigned int splitPacketIndex, unsigned int splitPacketCount, unsigned int orderingIndex);
65  virtual void FormatLine(char* into, const char* dir, const char* type, unsigned int reliableMessageNumber, unsigned int frame
66  , const char* idToPrint, const BitSize_t bitLen, unsigned long long time, const SystemAddress& local, const SystemAddress& remote,
67  unsigned int splitPacketId, unsigned int splitPacketIndex, unsigned int splitPacketCount, unsigned int orderingIndex);
68 
70  virtual void OnDirectSocketSend(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress);
71  virtual void OnDirectSocketReceive(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress);
72  virtual void OnReliabilityLayerNotification(const char *errorMessage, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress, bool isError);
73  virtual void OnInternalPacket(InternalPacket *internalPacket, unsigned frameNumber, SystemAddress remoteSystemAddress, SLNet::TimeMS time, int isSend);
74  virtual void OnAck(unsigned int messageNumber, SystemAddress remoteSystemAddress, SLNet::TimeMS time);
75  virtual void OnPushBackPacket(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress);
76 
78  virtual void LogHeader(void);
79 
81  virtual void WriteLog(const char *str);
82 
83  // Write informational messages
84  virtual void WriteMiscellaneous(const char *type, const char *msg);
85 
86 
87  // Set to true to print ID_* instead of numbers
88  virtual void SetPrintID(bool print);
89  // Print or hide acks (clears up the screen not to print them but is worse for debugging)
90  virtual void SetPrintAcks(bool print);
91 
93  virtual void SetPrefix(const char *_prefix);
94 
96  virtual void SetSuffix(const char *_suffix);
97  static const char* BaseIDTOString(unsigned char Id);
98 
100  void SetLogDirectMessages(bool send);
101 protected:
102 
103  virtual bool UsesReliabilityLayer(void) const {return true;}
104  const char* IDTOString(unsigned char Id);
105  virtual void AddToLog(const char *str);
106  // Users should override this
107  virtual const char* UserIDTOString(unsigned char Id);
108  void GetLocalTime(char buffer[128]);
110 
111  bool printId, printAcks;
112  char prefix[256];
113  char suffix[256];
114 };
115 
116 } // namespace SLNet
117 
118 #endif
119 
120 #endif // _RAKNET_SUPPORT_*