00001 /****************************************************************************** 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00009 00010 #ifndef loggerFileWriter_H_ 00011 #define loggerFileWriter_H_ 00012 00013 #include "lgrCore.h" 00014 #include "lgrFileOutput.h" 00015 #include "virtualConstructor.h" 00016 #include "filePosition.h" 00017 #include "memoryBuffer.h" 00018 #include "smartBuffer.h" 00019 00020 #include <vlutil/vlNetTypes.h> 00021 00022 namespace MAKLogger 00023 { 00024 class DtCheckpointPolicy; 00025 class DtMessageIOInfo; 00026 class DtLoggerRecordFile; 00027 00030 class DT_DLL_LGRCORE DtLoggerFileWriter : public DtLgrFileOutput 00031 { 00032 00033 public: 00034 DT_VIRTUAL_CTR(DtLoggerFileWriter,(DtMessageIOInfo*,DtLoggerRecordFile*)) 00035 00036 virtual ~DtLoggerFileWriter(); 00037 00038 private: 00040 DtLoggerFileWriter(const DtLoggerFileWriter&); 00042 DtLoggerFileWriter& operator=(const DtLoggerFileWriter&); 00043 public: 00044 00047 virtual void setDuration(const DtRelativeTime& duration); 00048 00050 virtual const DtRelativeTime& duration() const; 00051 00053 virtual void setWriteBufferSize(size_t); 00054 00056 virtual size_t getWriteBufferSize() const; 00057 00060 virtual void activate(const DtMessageInput* fileInput); 00061 00063 virtual bool isActivated() const; 00064 00066 virtual void deactivate(); 00067 00069 virtual const DtMessageIOInfo* info() const; 00070 00072 virtual const DtString& filename() const; 00073 00077 virtual DtFilePosition fileSize() const; 00078 00082 virtual DtFilePosition currentPosition() const; 00083 00085 virtual void flush(); 00086 00088 virtual void setOutputScaling(double scaling, bool enableStatic); 00089 00091 static const DtU32 PostDataMagic = 0xCFB91181; 00092 00094 const DtLoggerRecordFile* loggerRecordFile() const; 00095 00096 protected: 00097 00099 virtual bool writePacket(const DtPacket& packet); 00100 00101 protected: 00102 00103 DtMessageIOInfo* myMessageInfo; 00104 DtLoggerRecordFile* myRecordFile; 00105 size_t myBufferSize; 00106 DtMemoryBufferSP myMemory; 00107 DtSmartBuffer myCurrentMemory; 00108 bool myActivatedFlag; 00109 DtRelativeTime myDuration; 00110 }; 00111 00112 } 00113 00114 #endif