Go to the documentation of this file.00001
00002
00003
00004
00005
00009
00010 #ifndef lgrClock_H_
00011 #define lgrClock_H_
00012
00013 #include "lgrCore.h"
00014 #include "absoluteTime.h"
00015
00016 #include <vlutil/vlTime.h>
00017
00018 namespace MAKLogger
00019 {
00020
00024 class DT_DLL_LGRCORE DtTimeProvider
00025 {
00026 public:
00028 DtTimeProvider();
00029
00031 virtual ~DtTimeProvider();
00032
00034 virtual void tick() = 0;
00035
00038 virtual double advancedTime() const = 0;
00039
00041 virtual double elapsedTime() const = 0;
00042
00044 virtual double timeOffset() const = 0;
00045 };
00046
00050 class DT_DLL_LGRCORE DtWallClockTimeProvider : public DtTimeProvider
00051 {
00052 public:
00054 DtWallClockTimeProvider();
00055
00057 virtual ~DtWallClockTimeProvider();
00058
00061 virtual void tick();
00062
00065 virtual double advancedTime() const;
00066
00068 virtual double elapsedTime() const;
00069
00071 virtual double timeOffset() const;
00072
00073 protected:
00074 DtClock myClock;
00075 double myTimeAdvance;
00076 double myLastAbsTime;
00077 };
00078
00082 class DT_DLL_LGRCORE DtLgrClock
00083 {
00084 public:
00088 DtLgrClock(const DtTimeProvider* timeProvider);
00090 virtual ~DtLgrClock();
00091
00094 virtual void tick();
00095
00098 DtAbsoluteTime currentTime() const;
00099
00101 void setCurrentTime(const DtAbsoluteTime& newTime);
00102
00104 virtual DtAbsoluteTime pendingTime() const;
00105
00107 DtRelativeTime lastTimeStep() const;
00108
00110 virtual void stop();
00111
00113 virtual void pause();
00114
00117 virtual void setTimeScale(double scaleValue);
00118
00120 virtual double timeScale() const;
00121
00124 virtual void setTimeProvider(const DtTimeProvider* timeProvider);
00125
00127 virtual const DtTimeProvider* timeProvider() const;
00128
00129 protected:
00130
00131 const DtTimeProvider* myTimeProvider;
00132
00133 DtAbsoluteTime myLastTime;
00134 DtAbsoluteTime myCurrentTime;
00135 DtRelativeTime myLastTimeStep;
00136
00137 double myTimeScale;
00138 };
00139
00140 }
00141
00142 #endif