lgrLegacyUncheckpointedFormat.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00008 
00009 #ifndef lgrLegacyUncheckpointedFormat_H_
00010 #define lgrLegacyUncheckpointedFormat_H_
00011 
00012 #include "lgrFileFormatter.h"
00013 #include "filePosition.h"
00014 #include <vlutil/vlNetTypes.h>
00015 #include <vlutil/vlTime.h>
00016 
00017 #include "memoryBuffer.h"
00018 
00019 namespace MAKLogger
00020 {
00021    class DtPacket;
00022 
00026    class DT_DLL_LGRCORE DtLgrLegacyUncheckpointedFormat : public DtLgrFileFormatter
00027    {
00028 
00029    protected:
00030       DtLgrLegacyUncheckpointedFormat(DtLoggerFile*);
00031       virtual ~DtLgrLegacyUncheckpointedFormat();
00032 
00033    private:
00035       DtLgrLegacyUncheckpointedFormat(const DtLgrLegacyUncheckpointedFormat&);
00037       DtLgrLegacyUncheckpointedFormat& operator=(const DtLgrLegacyUncheckpointedFormat&);
00038    public:
00039 
00048       virtual void initializeSerialMode(DtFilePosition firstPacket = 0,
00049          DtFilePosition lastPacket = 0);
00050 
00052       virtual void copyMetaData(const DtLgrFileFormatter* formatter);
00053 
00055 
00056 
00058       virtual bool isEofValid() const;
00059 
00068       virtual bool atEndOfFile();
00069 
00074       virtual bool seekToFirstPacket();
00075 
00080       virtual bool seekToFirstPacket(int type);
00081 
00086       virtual bool seekToLastPacket();
00087 
00092       virtual bool seekToLastPacket(int type);
00093 
00098       virtual bool seekToFirstPacketBeforeTime(double time);
00099 
00103       virtual bool seekToFirstPacketBeforeTime(int type,double time);
00104 
00109       virtual bool seekToFirstPacketAfterTime(double time);
00110 
00115       virtual bool seekToFirstPacketAfterTime(int type,double time);
00116 
00120       virtual bool seekToNextPacket();
00121 
00126       virtual bool seekToNextPacket(int type);
00127 
00131       virtual bool seekToPreviousPacket();
00132 
00137       virtual bool seekToPreviousPacket(int type);
00138 
00141       virtual void seekToPosition(DtFilePosition);
00142 
00145       virtual double currentPacketTime();
00146 
00149       virtual int currentPacketType();
00150 
00153       virtual size_t currentPacketSize();
00154 
00157       virtual size_t currentPacketDataSize();
00158 
00160       virtual DtFilePosition currentPosition();
00161 
00163       virtual bool hasCheckpoints() const;
00164 
00166       virtual void readMetaData(DtLoggerFileMetaData::DataPosition position);
00167 
00172       virtual void readMetaData();
00173 
00175       virtual void writeMetaData(DtLoggerFileMetaData::DataPosition position);
00176 
00178       virtual char* readPacketIntoBuffer(char* cur, char* end, DtMessageBuffer& messages, DtMemoryBufferSP& buffer);
00179 
00183       virtual void readPacketsUptoCount(DtMessageBuffer&,DtMemoryBufferSP,int packetCount);
00184 
00187       virtual void readPacketsUptoSize(DtMessageBuffer&,DtMemoryBufferSP);
00188 
00193       virtual void readPacketsUpToTime(DtMessageBuffer&,DtMemoryBufferSP,
00194          double time,bool inclusive = true);
00195 
00198       virtual void writePackets(const DtMessageBuffer&);
00199 
00202       virtual void writePacket(const DtPacket& packet);
00203 
00208       virtual size_t writePacket(const DtPacket& packet,void* memory,size_t memorySize,
00209          int fileWriteBufferOffset = -1);
00210 
00212       virtual void setDuration(double duration);
00213 
00215       virtual double duration() const;
00216 
00218 
00220       virtual size_t headerSize() const;
00221 
00223       virtual size_t tailSize() const;
00224 
00225    protected:
00226 
00227       struct NetPacketHeader
00228       {
00229          DtNetU32 numBytes;
00230          DtNetU32 flags;
00231          DtNetFloat64 arrivalTime;
00232       };
00233 
00234       struct NetPacketTail
00235       {
00236          DtNetU32 numBytes;
00237       };
00238 
00240       virtual DtFilePosition firstPacketPosition() const;
00241 
00243       virtual DtFilePosition lastPacketPosition() const;
00244 
00246       virtual double firstPacketTime() const;
00247 
00249       virtual double lastPacketTime() const;
00250 
00252       virtual size_t firstPacketSize() const;
00253 
00255       virtual size_t lastPacketSize() const;
00256 
00258       virtual size_t readPreviousPacketSize();
00259 
00261       virtual void fillHeader(void* header, const DtPacket& packet);
00262 
00264       virtual void writeHeader(int fd, const DtPacket& packet);
00265 
00267       virtual DtNetU32 headerNumBytes(void* header);
00268 
00270       virtual DtNetU32 headerFlags(void* header);
00271 
00273       virtual DtNetFloat64 headerArrivalTime(void* header);
00274 
00276       virtual void setFileEmpty();
00277 
00279       virtual void setFirstPacket();
00280 
00282       virtual void setLastPacket();
00283 
00285       virtual void findFirstSerialPacket(DtFilePosition firstPacket);
00286 
00288       virtual void findLastSerialPacket(DtFilePosition lastPacket);
00289 
00291       virtual DtPacket* readPacket();
00292 
00295       virtual void validateTime(double time);
00296 
00299       virtual void initReadStartMetaData();
00300 
00302       virtual void readStartMetaData();
00303 
00306       virtual void initReadMiddleMetaData();
00307 
00309       virtual void readMiddleMetaData();
00310 
00313       virtual void initReadEndMetaData();
00314 
00316       virtual void readEndMetaData();
00317 
00319       virtual void writeStartMetaData();
00320 
00322       virtual void writeMiddleMetaData();
00323 
00325       virtual void writeEndMetaData();
00326 
00330       int fd();
00331 
00334 
00335 
00338       virtual void validateType(int type) = 0;
00339 
00341       virtual int decodeTypeFromFlags(unsigned int flags) = 0;
00342 
00344 
00345 
00346    protected:
00347 
00348       // When reading a start metadata packet (from start of file forward),
00349       // save the position of next packet (i.e., the end of start)
00350       DtFilePosition myEndOfStartMetadata;
00351       // When reading an end metadata packet (from eof back),
00352       // save the position of the packet being read (i.e., the start of end)
00353       DtFilePosition myStartOfEndMetadata;
00354       DtFilePosition myFirstPacketPosition;
00355       DtFilePosition myLastPacketPosition;
00356       double myFirstPacketTime;
00357       double myLastPacketTime;
00358       size_t myFirstPacketSize;
00359       size_t myLastPacketSize;
00360       bool myIsEmptyFlag;
00361       double myPreviousArrivalTime;
00362       int myPreviousType;
00363 
00364       DtClock myProfilingClock;
00365    };
00366 }
00367 
00368 #endif

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)