00001 /****************************************************************************** 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00009 00010 #ifndef loggerFileReader_H_ 00011 #define loggerFileReader_H_ 00012 00013 #include "lgrCore.h" 00014 00015 #include "lgrFileInput.h" 00016 #include "filePosition.h" 00017 #include "memoryBuffer.h" 00018 00019 namespace MAKLogger 00020 { 00021 class DtLoggerFile; 00022 class DtMessageIOInfo; 00023 class DtLoggerPlaybackFile; 00024 00027 class DT_DLL_LGRCORE DtLoggerFileReader : public DtLgrFileInput 00028 { 00029 00030 public: 00031 00033 DtLoggerFileReader(DtMessageIOInfo* info,DtLoggerPlaybackFile* file); 00034 00036 virtual ~DtLoggerFileReader(); 00037 00038 private: 00040 DtLoggerFileReader(const DtLoggerFileReader&); 00042 DtLoggerFileReader& operator=(const DtLoggerFileReader&); 00043 public: 00044 00046 virtual const DtLoggerPlaybackFile* playbackFile() const; 00047 00049 virtual void setReadBufferSize(size_t); 00050 00052 virtual size_t getReadBufferSize() const; 00053 00055 00056 virtual void activate(); 00057 virtual void deactivate(); 00058 00059 virtual void getNextMessages(DtMessageBuffer&); 00060 virtual void dropNextMessages(); 00061 00062 virtual const DtMessageIOInfo* info() const; 00064 00066 00067 00070 virtual double peekCurrentPacketTime(); 00071 00074 virtual int peekCurrentPacketType(); 00075 00078 virtual size_t peekCurrentPacketSize(); 00079 00080 virtual bool isCheckpointNecessary(DtAbsoluteTime currentTime, 00081 DtAbsoluteTime newTime); 00082 00083 virtual void seekToPreviousCheckpoint(DtAbsoluteTime timeToJumpBefore); 00084 00085 virtual void seekToNextCheckpoint(DtAbsoluteTime currentTime); 00086 00088 virtual const DtString& filename() const; 00089 00091 virtual DtFilePosition fileSize() const; 00092 00094 virtual DtFilePosition currentPosition() const; 00095 00097 virtual DtAbsoluteTime firstMessageTime() const; 00098 00100 virtual DtAbsoluteTime lastMessageTime() const; 00101 00103 virtual DtRelativeTime duration() const; 00104 00106 virtual DtAbsoluteTime lastReadTime() const; 00107 00109 virtual DtLgrEntityTracker* entityTracker() const; 00111 00112 protected: 00113 00114 DtLoggerPlaybackFile* myCurrentFile; 00115 DtAbsoluteTime myLastTimeRead; 00116 DtAbsoluteTime myLastTime; 00117 DtAbsoluteTime myFirstTime; 00118 size_t myBufferSize; 00119 DtMessageIOInfo* myMessageInfo; 00120 DtMemoryBufferSP myMemory; 00121 }; 00122 } 00123 00124 #endif