OpenRTM-aist  1.2.1
ClockManager.h
Go to the documentation of this file.
1 // -*- C++ -*-
19 #ifndef COIL_CLOCKMANAGER_H
20 #define COIL_CLOCKMANAGER_H
21 
22 #include <string>
23 #include <coil/Singleton.h>
24 #include <coil/TimeValue.h>
25 #include <coil/Mutex.h>
26 #include <coil/Guard.h>
27 
28 namespace coil
29 {
52  class IClock
53  {
54  public:
55  virtual ~IClock() {}
65  virtual coil::TimeValue gettime() const = 0;
75  virtual bool settime(coil::TimeValue clocktime) = 0;
76  };
77 
92  : public IClock
93  {
94  public:
95  virtual ~SystemClock();
96  virtual coil::TimeValue gettime() const;
97  virtual bool settime(coil::TimeValue clocktime);
98  };
99 
116  : public IClock
117  {
118  public:
119  LogicalClock();
120  virtual ~LogicalClock();
121  virtual coil::TimeValue gettime() const;
122  virtual bool settime(coil::TimeValue clocktime);
123  private:
124  coil::TimeValue m_currentTime;
125  mutable coil::Mutex m_currentTimeMutex;
126  };
127 
144  : public IClock
145  {
146  public:
147  AdjustedClock();
148  virtual ~AdjustedClock();
149  virtual coil::TimeValue gettime() const;
150  virtual bool settime(coil::TimeValue clocktime);
151  private:
152  coil::TimeValue m_offset;
153  mutable coil::Mutex m_offsetMutex;
154  };
155 
176 #ifndef WIN32
177  : public coil::Singleton<ClockManager>
178 #endif
179  {
180  public:
181  IClock& getClock(std::string clocktype);
182 #ifdef WIN32
183  static ClockManager& instance();
184  static ClockManager* clockmgr;
185  static coil::Mutex clockmgr_mutex;
186  private:
187  ClockManager() {};
188 #endif
189  private:
190  SystemClock m_systemClock;
191  LogicalClock m_logicalClock;
192  AdjustedClock m_adjustedClock;
193  };
194 }; // namespace coil
195 #endif // COIL_CLOCKMANAGER_H
An interface to set and get time.
Definition: ClockManager.h:52
Mutex class.
Definition: Mutex.h:40
TimeValue class.
Definition: TimeValue.h:40
Clock object to handle logical clock.
Definition: ClockManager.h:115
virtual bool settime(coil::TimeValue clocktime)=0
Setting time.
Singleton template class.
Singleton template class.
Definition: Singleton.h:106
Guard template class.
Clock object to handle adjusted clock.
Definition: ClockManager.h:143
A global clock management class.
Definition: ClockManager.h:175
virtual coil::TimeValue gettime() const =0
Getting time.
clock object to handle system clock
Definition: ClockManager.h:91
Common Object Interface Layer.
Definition: Affinity.h:28
virtual ~IClock()
Definition: ClockManager.h:55