MAK Data Logger API Documentation for HLA
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lgrRecordDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #ifndef lgrRecordDriver_H_
11 #define lgrRecordDriver_H_
12 
13 #include <lgrCore/lgrDriver.h>
14 #include <lgrUtil/absoluteTime.h>
15 #include <lgrCore/messageBuffer.h>
16 #include <vlutil/vlRunnable.h>
17 
18 class DtThread;
19 
20 namespace MAKLogger
21 {
22  class DtCheckpointPolicy;
23  class DtLgrClock;
24  class DtLgrContinuousClock;
25  class DtLgrFileInput;
26  class DtLgrFileOutput;
27  class DtLgrPlaybackDriver;
28  class DtLgrRecordCommandFactory;
29  class DtLgrRecordInterface;
30  class DtMessagePipeline;
31  class DtThreadedObject;
32  class DtLgrRecordMediaStream;
33 
38  {
39  public:
42 
44 
45  virtual ~DtLgrRecordDriver();
46 
48  virtual void tick();
49 
50  virtual bool releasePipeline();
51  virtual bool getPipeline();
52  virtual bool hasPipeline() const;
53 
54  virtual bool isFileOpen() const;
55  virtual bool isFileEmpty() const;
56 
57  virtual bool isRecording() const;
58  virtual bool isPaused() const;
59 
61  virtual bool pauseOnRecordAs() const;
62 
64  virtual int checkpointPolicyId() const;
65 
67  virtual int checkpointCount() const;
68 
70  virtual int checkpointSize() const;
71 
73  virtual DtAbsoluteTime checkpointTime() const;
74 
76  bool interactionsCheckpointed() const;
77 
80  virtual const DtString& filename() const;
81 
86  virtual DtCheckpointPolicy* duplicateCheckpointPolicy() const;
87 
89  virtual bool recordToMultipleFiles() const;
90 
92  virtual double multipleFileDuration() const;
93 
95  virtual const DtString& multipleFileNamingConvention() const;
96 
98  virtual const DtLgrFileOutput* currentOutput() const;
99 
101  virtual void addTemporaryTrackedEntity(const DtString& name);
102 
104  virtual const DtString& streamPipeline() const;
105 
107  virtual const DtString& streamConfiguration() const;
108 
109  const DtString& selectedMediaStreamConfigurations() const;
110 
112  bool isRecordingMediaStream() const;
113 
115  bool mediaRecordByDefault() const;
116 
118  int mediaRecordPort() const;
119 
121  virtual void stopAllThreads();
122 
124  virtual void stopThread( DtLgrCommandThread* commandThread );
125 
126  protected:
127 
129  virtual DtLgrPlaybackDriver* getPlaybackDriver(bool checkForFileOpen) const;
130 
132  virtual void setCheckpointPolicy(DtCheckpointPolicy* policy);
133 
135  virtual void tickNormalRecording();
136 
140  virtual void tickRecordToMultipleFiles(double multipleFileDuration, bool final = false);
141 
143  virtual void configurePipeline();
144 
146  virtual void activateIdleListening();
147 
148  virtual bool doNewFile(DtString filename, DtString description, bool overwrite);
149  virtual bool doRecord(bool multipleFiles);
150  virtual bool doStop();
151  virtual bool doPause();
152  virtual bool doUnpause();
153 
155  virtual DtString multipleFileName() const;
156 
161  virtual DtString multiFileDescription(bool final);
162 
164  virtual void initializeMediaPipeline(const DtString& filename);
165 
168  virtual void createMediaPipeline(const DtString& pipelineConfigurations,
169  const DtString tapeFilePath, int port);
170 
172 
173  DtResponse newFile(const DtCommand& command);
174  DtResponse closeFile(const DtCommand& command);
175  DtResponse cancelRecording(const DtCommand& command);
176  DtResponse record(const DtCommand& command);
177  DtResponse pause(const DtCommand& command);
178  DtResponse unpause(const DtCommand& command);
179  DtResponse stop(const DtCommand& command);
180  DtResponse stopCondition(const DtCommand& command);
181  DtResponse stopDuration(const DtCommand& command);
182  DtResponse stopSize(const DtCommand& command);
183  DtResponse setCheckpointParameters(const DtCommand& command);
184  DtResponse setPauseOnRecordAs(const DtCommand& command);
185  DtResponse saveRecordedData(const DtCommand& command);
186  DtResponse saveRecordedDataFinished(const DtCommand& command);
187  DtResponse setRecordToMultipleFilesSettings(const DtCommand& command);
188  DtResponse startRecordToMultipleFiles(const DtCommand& command);
189  DtResponse setMediaRecordFromStreamConfiguration( const DtCommand& command );
190  DtResponse setMediaRecordFromStreamPipeline(const DtCommand& command);
191  DtResponse setIsRecordingMediaStream(const DtCommand& command);
192  DtResponse setMediaRecordByDefault(const DtCommand& command);
193  DtResponse setMediaRecordStreamParameters(const DtCommand& command);
195 
196  protected:
197 
199  {
200  public:
202  DtString description, DtLgrFileInput* input, DtLgrFileOutput* output,
203  int packetOperationCount, double fixedDuration,DtRelativeTime offset);
204 
205  virtual ~DumpCurrentRecordingThread();
206 
207  virtual void run();
208 
209  protected:
218  };
219 
225 
233 
237 
245  DtU64 myStopSize;
249 
258 
261 
264  std::set<DtLgrRecordMediaStream*> myRecordStreams;
268  DtFilename myMediaFilename;
269 
270  };
271 
272 }
273 
274 #endif
The logger command which contains the command type and its parameters.
Definition: lgrCommand.h:109
DtAbsoluteTime myCurrentTime
Definition: lgrRecordDriver.h:236
double myLastMultipleFileEndTime
Definition: lgrRecordDriver.h:252
DtLgrFileOutput * myFileOutput
Definition: lgrRecordDriver.h:222
DtString myFilename
Definition: lgrRecordDriver.h:211
DtThreadedObject * myDumpThread
Definition: lgrRecordDriver.h:248
DtInt64 DtFilePosition
The position in a file, stored as a 64bit unsigned integer.
Definition: filePosition.h:18
DtLgrSystemDriver * myDriver
Definition: lgrRecordDriver.h:223
This class provides the base interface for DtLgrCommandHandler.
Definition: lgrDriver.h:35
The base class for command interface which allows an interface to send and receive commands...
Definition: lgrInterface.h:33
#define DT_VIRTUAL_CTR(CLASS_NAME, ARG_TYPES_LIST)
Declare a Virtual Constructor Create using DT_VIRTUAL_CTR(CLASS_NAME,ARG_TYPES_LIST) Where CLASS_NAME...
Definition: virtualConstructor.h:34
int myMediaRecordPort
Definition: lgrRecordDriver.h:266
int myCheckpointPolicyId
Definition: lgrRecordDriver.h:228
DtString myDescription
Definition: lgrRecordDriver.h:221
Relative Time, an elapsed duration of time, no implied measurement, could be seconds/cycles or ticks ...
Definition: absoluteTime.h:28
DtCheckpointPolicy * myCheckpointPolicy
The checkpoint policy, by default checkpoint every 500 packets.
Definition: lgrRecordDriver.h:227
DtCommandInterface * myInterface
Definition: lgrRecordDriver.h:210
bool myMediaRecordByDefault
Definition: lgrRecordDriver.h:267
DtBoost::shared_ptr< const DtCommand > DtResponse
Definition: lgrCommand.h:174
DtLgrFileInput * myInputFile
Definition: lgrRecordDriver.h:213
DtAbsoluteTime myTimeToSaveMultipleFiles
Definition: lgrRecordDriver.h:254
An abstract interface for message input from a file.
Definition: lgrFileInput.h:26
DtAbsoluteTime myCheckpointPolicyTime
Definition: lgrRecordDriver.h:231
int myCheckpointPolicyCount
Definition: lgrRecordDriver.h:229
DtLgrRecordInterface Interface
Definition: lgrRecordDriver.h:41
DtString myStreamConfiguration
Definition: lgrRecordDriver.h:262
bool myPauseOnRecordAsFlag
Definition: lgrRecordDriver.h:240
Message buffer class responsible for storing a list of messages and iterating through that list...
Definition: messageBuffer.h:23
DtMessageBuffer * myCompleteState
Definition: lgrRecordDriver.h:257
DtLgrClock * myOriginalClock
Definition: lgrRecordDriver.h:235
int myStopCondition
Definition: lgrRecordDriver.h:242
bool mySavingRecordingData
Definition: lgrRecordDriver.h:247
DtRelativeTime myOffset
Definition: lgrRecordDriver.h:217
A Threaded object runs a DtRunnable object in a separate thread.
Definition: threaded.h:29
DtString myStreamPipeline
Definition: lgrRecordDriver.h:263
The factory responsible for creating recording commands.
Definition: lgrRecordCommandFactory.h:24
Checkpoint policy class responsible.
Definition: lgrCheckpointPolicy.h:28
DtMessageBuffer myPauseTimeSnapshot
A snapshot of the current state taken before pausing, diffed against upon unpause.
Definition: lgrRecordDriver.h:260
The class responsible for controlling the logger playback functionality.
Definition: lgrPlaybackDriver.h:36
bool myRecordingFlag
Definition: lgrRecordDriver.h:238
A clock which provides a continuous time via a time provider.
Definition: lgrClock.h:140
Contains MAKLogger::DtMessageBuffer class.
int myPacketOperationCount
Definition: lgrRecordDriver.h:246
bool myRecordToMultipleFiles
Definition: lgrRecordDriver.h:250
/brief Base class for defining command operations that run in a separate thread.
Definition: lgrCommandThread.h:26
Contains MAKLogger::DtAbsoluteTime and MAKLogger::DtRelativeTime classes.
The class responsible for controlling the logger recording functionality.
Definition: lgrRecordDriver.h:37
std::set< DtLgrRecordMediaStream * > myRecordStreams
Definition: lgrRecordDriver.h:264
DtLgrFileOutput * myOutput
Definition: lgrRecordDriver.h:214
double myMultipleFileDuration
Definition: lgrRecordDriver.h:251
DtLgrRecordCommandFactory Factory
Definition: lgrRecordDriver.h:40
bool myIsRecordingMediaStream
Definition: lgrRecordDriver.h:265
bool myPausedFlag
Definition: lgrRecordDriver.h:239
DtString myMultipleFileNamingConvention
Definition: lgrRecordDriver.h:253
#define DT_DLL_LGRCORE
Definition: lgrCore.h:19
DtLgrContinuousClock * myRecordingClock
Definition: lgrRecordDriver.h:234
DtRelativeTime myFixedDuration
Definition: lgrRecordDriver.h:216
int myPacketOperationCount
Definition: lgrRecordDriver.h:215
DtFilename myMediaFilename
Definition: lgrRecordDriver.h:268
int myCheckpointPolicySize
Definition: lgrRecordDriver.h:230
DtString myFileName
Definition: lgrRecordDriver.h:220
int myMultipleFileIndex
Definition: lgrRecordDriver.h:255
The message pipeline which takes messages from the input, passes them through the state and ultimatel...
Definition: messagePipeline.h:28
DtFilePosition myNextSavePosition
Definition: lgrRecordDriver.h:256
The class responsible for interfacing with the logger recording functionality.
Definition: lgrRecordInterface.h:28
Contains MAKLogger::DtLgrCommandHandler class.
A clock that provides current time via a time provider.
Definition: lgrClock.h:92
bool myCheckpointInteractions
Definition: lgrRecordDriver.h:232
DtMessagePipeline * myPipeline
Definition: lgrRecordDriver.h:224
DtRelativeTime myStopDuration
Definition: lgrRecordDriver.h:244
DtU64 myStopSize
Definition: lgrRecordDriver.h:245
bool myStopConditionClose
Definition: lgrRecordDriver.h:243
DtLgrSystemDrive defines the lowest level driver which controls the logger.
Definition: lgrSystemDriver.h:43
Class responsible for message Output to a file.
Definition: lgrFileOutput.h:25
Absolute Time, a particular measured instance in time, could be thought of as a set of relative times...
Definition: absoluteTime.h:82
bool myFileEmptyFlag
Definition: lgrRecordDriver.h:241
DtString myDescription
Definition: lgrRecordDriver.h:212

Document ID: Generated on Thu Sep 2 15:35:22 EDT 2021 from SVN revision 233992
Copyright © 2021 MAK Technologies. All Rights Reserved (www.mak.com)