OpenRTM-aist  1.2.1
Timer.h
Go to the documentation of this file.
1 // -*- C++ -*-
19 #ifndef Timer_h
20 #define Timer_h
21 
22 #include <coil/TimeValue.h>
23 #include <coil/Listener.h>
24 #include <coil/Mutex.h>
25 #include <coil/Guard.h>
26 #include <coil/Task.h>
27 #include <vector>
28 
30 
31 namespace coil
32 {
53  class Timer
54  : public coil::Task
55  {
56  typedef coil::Mutex Mutex;
57  typedef coil::Guard<Mutex> Guard;
58  public:
76  Timer(TimeValue& interval);
77 
91  virtual ~Timer();
92 
93  //============================================================
94  // ACE_Task
95  //============================================================
119  virtual int open(void *args);
120 
140  virtual int svc(void);
141 
142  //============================================================
143  // public functions
144  //============================================================
158  void start();
159 
173  void stop();
174 
193  void invoke();
194 
226 
254  template <class ListenerClass>
255  ListenerId registerListenerObj(ListenerClass* obj,
256  void (ListenerClass::*cbf)(),
257  TimeValue tm)
258  {
259  return registerListener(new ListenerObject<ListenerClass>(obj, cbf), tm);
260  }
261 
287  {
288  return registerListener(new ListenerFunc(cbf), tm);
289  }
290 
315 
316  private:
317  TimeValue m_interval;
318 
319  Mutex m_runningMutex;
320  bool m_running;
321 
322  struct Task
323  {
325  : listener(l), period(p), remains(p)
326  {
327  }
328  ListenerBase* listener;
329  TimeValue period;
330  TimeValue remains;
331  };
332 
333  std::vector<Task> m_tasks;
334  Mutex m_taskMutex;
335  };
336 };
337 #endif // Timer_h
338 
Listener class.
ListenerBase * ListenerId
Definition: Timer.h:29
Mutex class.
Definition: Mutex.h:40
ListenerId registerListener(ListenerBase *listener, TimeValue tm)
Register listener.
virtual ~Timer()
Destructor.
ListenerId registerListenerFunc(void(*cbf)(), TimeValue tm)
Register listener.
Definition: Timer.h:286
ListenerId registerListenerObj(ListenerClass *obj, void(ListenerClass::*cbf)(), TimeValue tm)
Register listener.
Definition: Timer.h:255
TimeValue class.
Definition: TimeValue.h:40
virtual int open(void *args)
Create thread for Timer.
void stop()
Stop Timer task.
ListenerFunc class.
Definition: Listener.h:186
Guard template class.
void invoke()
Invoke Timer task.
ListenerBase class.
Definition: Listener.h:43
Task()
Constructor.
Timer class.
Definition: Timer.h:53
void start()
Start Timer task.
virtual int svc(void)
Thread execution function for Timer.
Timer(TimeValue &interval)
Constructor.
Task class.
Definition: Task.h:39
ListenerObject class.
Definition: Listener.h:98
Guard template class.
Definition: Guard.h:41
bool unregisterListener(ListenerId id)
Unregister listener.
Common Object Interface Layer.
Definition: Affinity.h:28