Go to the documentation of this file.00001
00002
00003
00004
00005
00009
00010 #ifndef lgrRecordInterface_H_
00011 #define lgrRecordInterface_H_
00012
00013 #include "lgrTimeInterface.h"
00014 #include "absoluteTime.h"
00015 #include "lgrCheckpointPolicy.h"
00016 #include <vlutil/vlString.h>
00017
00018 namespace MAKLogger
00019 {
00020
00021 class DtLogger;
00022 class DtLgrRecordDriver;
00023 class DtLgrRecordCommandFactory;
00024
00028 class DT_DLL_LGRCORE DtLgrRecordInterface : public virtual DtLgrTimeInterface
00029 {
00030
00031 public:
00032
00033 typedef DtLgrRecordCommandFactory Factory;
00034
00037 static DtLgrRecordInterface* create(DtLogger&);
00038
00041 static DtLgrRecordInterface* createNonThreadsafe(DtLogger& logger,
00042 const DtLgrRecordDriver& driver);
00043
00044 protected:
00045
00047 DtLgrRecordInterface(DtLogger& logger,const DtLgrRecordDriver& driver);
00048
00049
00050 public:
00051 virtual ~DtLgrRecordInterface();
00052
00054 virtual void startNewFile(const DtString& filename,bool overwrite) const;
00055
00057 virtual void recordToMultipleFiles(const DtString& filename) const;
00058
00061 virtual void closeFile() const;
00062
00064 enum StopCondition
00065 {
00067 StopOnCommandOnly,
00069 StopOnDuration,
00071 StopOnSize,
00073 StopOnDurationOrSize
00074 };
00075
00077 virtual void setStopCondition(StopCondition,bool close) const;
00078
00082 virtual void setStopDuration(DtRelativeTime duration) const;
00083
00087 virtual void setStopSize(DtU64 filesize) const;
00088
00090 virtual void setPauseOnRecordAs(bool record) const;
00091
00093 virtual bool isFileLoaded() const;
00094
00096 virtual bool isFileEmpty() const;
00097
00099 virtual const DtString& filename() const;
00100
00102 virtual bool isRecording() const;
00103
00105 virtual bool isPaused() const;
00106
00108 virtual bool isStopped() const;
00109
00111 virtual bool pauseOnRecordAs() const;
00112
00114 virtual void record() const;
00115
00117 virtual void pause() const;
00118
00120 virtual void unpause() const;
00121
00123 virtual void stop(bool closeAndOpenForPlayback) const;
00124
00126 virtual void setCheckpointParameters(DtCheckpointPolicy::Policy policy,
00127 int size,int count,DtAbsoluteTime time)const;
00128
00130 virtual void cancelRecording() const;
00131
00134 virtual void saveRecordedData(const DtString& filename,
00135 bool onlySinceLastSaveData, bool outputDuration) const;
00136
00138 virtual void setRecordToMultipleFilesSettings(double duration,
00139 const DtString& namingConvention) const;
00140
00142 int checkpointPolicyId() const;
00143
00145 int checkpointCount() const;
00146
00148 int checkpointSize() const;
00149
00151 DtAbsoluteTime checkpointTime() const;
00152
00154 double multipleFileDuration() const;
00155
00157 const DtString& multipleFileNamingConvention() const;
00158
00160 void newFileOpened(DtResponse);
00161 void newFileFailed(DtResponse);
00162 void newFileClosed(DtResponse);
00163 void recordingChanged(DtResponse);
00164 void recordingPausedChanged(DtResponse);
00165 void pauseOnRecordAsChanged(DtResponse);
00166 void checkpointParametersChanged(DtResponse);
00167 void fileEmptyChanged(DtResponse);
00168 void recordToMultipleFilesChanged(DtResponse);
00169
00170 DtValueSignal<DtString> newFileOpenedSignal;
00171 DtValueSignal<DtString> newFileFailedSignal;
00172 DtValueSignal<bool> recordingChangedSignal;
00173 DtValueSignal<bool> recordingPausedChangedSignal;
00174 DtValueSignal<bool> pauseOnRecordAsChangedSignal;
00175
00176 protected:
00177
00178 void connectResponseHandler(DtLgrCommandId id,
00179 void (DtLgrRecordInterface::* function)(DtResponse));
00180
00181 DtString myNewFileName;
00182 DtString myErrorMessage;
00183 bool myRecordingFlag;
00184 bool myPausedFlag;
00185 bool myPauseOnRecordAs;
00186 bool myIsFileLoadedFlag;
00187 bool myEmptyFlag;
00188 int myCheckpointPolicy;
00189 int myCheckpointCount;
00190 int myCheckpointSize;
00191 DtAbsoluteTime myCheckpointTime;
00192
00193 double myMultipleFileDuration;
00194 DtString myMultipleFileNamingConvention;
00195
00196 };
00197
00198 }
00199
00200 #endif