OpenRTM  1.0.0
PeriodicTaskBase.h
[詳解]
1 // -*- C++ -*-
20 #ifndef COIL_PERIODICTASKBASE_H
21 #define COIL_PERIODICTASKBASE_H
22 
23 #include <coil/TimeValue.h>
24 #include <coil/TimeMeasure.h>
25 #include <coil/Task.h>
26 
27 namespace coil
28 {
43  {
44  public:
60  virtual ~TaskFuncBase() {}
61 
77  virtual int operator()() = 0;
78  };
79 
93  template <typename T, typename F = int (*)()>
94  class TaskFunc
95  : public TaskFuncBase
96  {
97  public:
119  TaskFunc(T* obj, F func)
120  : m_obj(obj), m_func(func)
121  {
122  }
123 
139  virtual ~TaskFunc() {}
140 
156  virtual int operator()()
157  {
158  return (m_obj->*m_func)();
159  }
160 
168  T* m_obj;
169 
178  };
179 
194  : public coil::Task
195  {
196  public:
212  virtual ~PeriodicTaskBase(){};
213 
229  virtual void activate() = 0;
230 
246  virtual void finalize() = 0;
247 
263  virtual int suspend(void) = 0;
264 
280  virtual int resume(void) = 0;
281 
297  virtual void signal() = 0;
298 
320  virtual bool setTask(TaskFuncBase* func, bool delete_in_dtor = true) = 0;
321 
347  template <class O, class F>
348  bool setTask(O* obj, F fun)
349  {
350  return this->setTask(new TaskFunc<O, F>(obj, fun));
351  }
352 
372  virtual void setPeriod(double period) = 0;
373 
393  virtual void setPeriod(coil::TimeValue& period) = 0;
394 
414  virtual void executionMeasure(bool value) = 0;
415 
435  virtual void executionMeasureCount(int n) = 0;
436 
456  virtual void periodicMeasure(bool value) = 0;
457 
477  virtual void periodicMeasureCount(int n) = 0;
478 
495 
512 
513  };
514 }; // namespace coil
515 
516 #endif // COIL_PERIODICTASKBASE_H
virtual ~TaskFuncBase()
デストラクタ
Definition: PeriodicTaskBase.h:60
virtual coil::TimeMeasure::Statistics getPeriodStat()=0
タスク周期時間計測結果を取得する純粋仮想関数
virtual int resume(void)=0
中断されているタスクを再開する純粋仮想関数
TaskFuncBase クラス
Definition: PeriodicTaskBase.h:42
時間統計用構造体
Definition: TimeMeasure.h:63
F m_func
関数
Definition: PeriodicTaskBase.h:177
virtual int suspend(void)=0
タスク実行を中断する純粋仮想関数
Periodic time measurement class.
TaskFunc テンプレートクラス
Definition: PeriodicTaskBase.h:94
virtual bool setTask(TaskFuncBase *func, bool delete_in_dtor=true)=0
タスク実行関数をセットする純粋仮想関数
TimeValue クラス
Definition: TimeValue.h:40
virtual int operator()()=0
オブジェクトの関数実行用純粋仮想関数
virtual void executionMeasureCount(int n)=0
タスク関数実行時間計測周期用純粋仮想関数
virtual void signal()=0
中断されているタスクを1周期だけ実行する純粋仮想関数
virtual void activate()=0
タスク実行を開始する純粋仮想関数
virtual ~TaskFunc()
デストラクタ
Definition: PeriodicTaskBase.h:139
virtual void periodicMeasure(bool value)=0
タスク周期時間計測を有効にする純粋仮想関数
virtual void finalize()=0
タスク実行を終了する純粋仮想関数
virtual coil::TimeMeasure::Statistics getExecStat()=0
タスク関数実行時間計測結果を取得する純粋仮想関数
TaskFunc(T *obj, F func)
コンストラクタ
Definition: PeriodicTaskBase.h:119
PeriodicTaskBase クラス
Definition: PeriodicTaskBase.h:193
virtual void setPeriod(double period)=0
タスク実行周期をセットする純粋仮想関数
virtual void executionMeasure(bool value)=0
タスク関数実行時間計測を有効にする純粋仮想関数
bool setTask(O *obj, F fun)
タスク実行関数をセットする
Definition: PeriodicTaskBase.h:348
virtual void periodicMeasureCount(int n)=0
タスク周期時間計測周期用純粋仮想関数
Task クラス
Definition: Task.h:39
virtual int operator()()
オブジェクトの関数実行
Definition: PeriodicTaskBase.h:156
T * m_obj
オブジェクト
Definition: PeriodicTaskBase.h:168
virtual ~PeriodicTaskBase()
デストラクタ
Definition: PeriodicTaskBase.h:212