Go to the documentation of this file.00001
00002
00003
00004
00005
00008
00009 #ifndef lgrEntityTrackingFormat_H_
00010 #define lgrEntityTrackingFormat_H_
00011
00012 #include "lgrLegacyCheckpointedFormat.h"
00013 #include <vlutil/vlNetTypes.h>
00014
00015 namespace MAKLogger
00016 {
00017 class DtLgrEntityTracker;
00018
00025 class DT_DLL_LGRCORE DtLgrEntityTrackingFormat : public DtLgrLegacyCheckpointedFormat
00026 {
00027 protected:
00028 DtLgrEntityTrackingFormat(DtLoggerFile*);
00029 public:
00030 virtual ~DtLgrEntityTrackingFormat();
00031
00032 private:
00034 DtLgrEntityTrackingFormat(const DtLgrEntityTrackingFormat&);
00036 DtLgrEntityTrackingFormat& operator=(const DtLgrEntityTrackingFormat&);
00037 public:
00038
00040 virtual void copyMetaData(const DtLgrFileFormatter* formatter);
00041
00044 virtual void writePacket(const DtPacket& packet);
00045
00052 virtual size_t writePacket(const DtPacket& packet,void* memory,size_t memorySize,
00053 int fileWriteBufferOffset = -1);
00054
00056 virtual DtLgrEntityTracker* entityTracker() const = 0;
00057
00059 virtual size_t headerSize() const;
00060
00061 protected:
00062
00064 virtual DtLgrEntityTracker* entityTracker() = 0;
00065
00066 struct NetPacketHeader
00067 {
00068 DtNetU32 entityId;
00069 DtNetU32 numBytes;
00070 DtNetU32 flags;
00071 DtNetFloat64 arrivalTime;
00072 };
00073
00074 protected:
00075
00078 virtual double currentPacketTime();
00079
00082 virtual int currentPacketType();
00083
00086 virtual size_t currentPacketSize();
00087
00090 virtual size_t currentPacketDataSize();
00091
00093 virtual void fillHeader(void* header, const DtPacket& packet);
00094
00096 virtual void writeHeader(int fd, const DtPacket& packet);
00097
00099 virtual DtNetU32 headerEntityId(void* header);
00100
00102 virtual DtNetU32 headerNumBytes(void* header);
00103
00105 virtual DtNetU32 headerFlags(void* header);
00106
00108 virtual DtNetFloat64 headerArrivalTime(void* header);
00109
00111 virtual char* readPacketIntoBuffer(char* cur, char* end,
00112 DtMessageBuffer& messages, DtMemoryBufferSP& buffer);
00113
00115 virtual void readConfigMetaData();
00116
00118 virtual void writeConfigMetaData();
00119
00121 virtual void readDateTimeMetaData();
00122
00124 virtual void writeDateTimeMetaData();
00125
00127 virtual void readEntityTableMetaData();
00128
00130 virtual void writeEntityTableMetaData();
00131
00132 protected:
00133
00134 DtFilePosition myConfigDataPosition;
00135 DtFilePosition myDateTimeDataPosition;
00136 DtFilePosition myEntityTablePosition;
00137 };
00138 }
00139
00140 #endif
00141
00142
00143
00144