OpenRTM-aist  1.2.1
PeriodicExecutionContext.h
[詳解]
1 // -*- C++ -*-
19 #ifndef RTC_PERIODICEXECUTIONCONTEXT2_H
20 #define RTC_PERIODICEXECUTIONCONTEXT2_H
21 
22 #include <vector>
23 #include <iostream>
24 
25 #include <coil/Task.h>
26 #include <coil/Mutex.h>
27 #include <coil/Condition.h>
28 #include <coil/Affinity.h>
29 
31 
32 #define NUM_OF_LIFECYCLESTATE 4
33 
34 #ifdef WIN32
35 #pragma warning( disable : 4290 )
36 #endif
37 
38 namespace RTC_exp
39 {
61  : public virtual POA_RTC::ExecutionContextService,
62  public virtual PortableServer::RefCountServantBase,
64  public coil::Task
65  {
67  public:
88 
102  virtual ~PeriodicExecutionContext(void);
103 
117  virtual void init(coil::Properties& props);
118 
143  virtual int open(void *args);
144 
164  virtual int svc(void);
165 
193  virtual int close(unsigned long flags);
194 
195  //============================================================
196  // ExecutionContext
197  //============================================================
222  virtual CORBA::Boolean is_running(void)
223  throw (CORBA::SystemException);
224 
252  virtual RTC::ReturnCode_t start(void)
253  throw (CORBA::SystemException);
254 
281  virtual RTC::ReturnCode_t stop(void)
282  throw (CORBA::SystemException);
283 
304  virtual CORBA::Double get_rate(void)
305  throw (CORBA::SystemException);
306 
336  virtual RTC::ReturnCode_t set_rate(CORBA::Double rate)
337  throw (CORBA::SystemException);
338 
372  virtual RTC::ReturnCode_t
374  throw (CORBA::SystemException);
375 
408  virtual RTC::ReturnCode_t
410  throw (CORBA::SystemException);
411 
443  virtual RTC::ReturnCode_t
445  throw (CORBA::SystemException);
446 
473  virtual RTC::LifeCycleState
475  throw (CORBA::SystemException);
476 
496  virtual RTC::ExecutionKind get_kind(void)
497  throw (CORBA::SystemException);
498 
530  virtual RTC::ReturnCode_t add_component(RTC::LightweightRTObject_ptr comp)
531  throw (CORBA::SystemException);
532 
563  virtual RTC::ReturnCode_t
565  throw (CORBA::SystemException);
566 
586  virtual RTC::ExecutionContextProfile* get_profile(void)
587  throw (CORBA::SystemException);
588 
589  protected:
590  template <class T>
591  void getProperty(coil::Properties& prop, const char* key, T& value)
592  {
593  if (prop.findNode(key) != 0)
594  {
595  T tmp;
596  if (coil::stringTo(tmp, prop[key].c_str()))
597  {
598  value = tmp;
599  }
600  }
601  }
605  virtual RTC::ReturnCode_t onStarted();
609  virtual RTC::ReturnCode_t onStopping();
610  // template virtual functions adding/removing component
614  virtual RTC::ReturnCode_t
619  virtual RTC::ReturnCode_t
621 
625  virtual RTC::ReturnCode_t
626  onWaitingActivated(RTC_impl::RTObjectStateMachine* comp, long int count);
630  virtual RTC::ReturnCode_t
631  onActivated(RTC_impl::RTObjectStateMachine* comp, long int count);
635  virtual RTC::ReturnCode_t
640  virtual RTC::ReturnCode_t
641  onDeactivated(RTC_impl::RTObjectStateMachine* comp, long int count);
645  virtual RTC::ReturnCode_t
646  onWaitingReset(RTC_impl::RTObjectStateMachine* comp, long int count);
650  virtual RTC::ReturnCode_t
651  onReset(RTC_impl::RTObjectStateMachine* comp, long int count);
652 
656  virtual void setCpuAffinity(coil::Properties& props);
657 
659  {
660  Guard guard(m_svcmutex);
661  return m_svc;
662  }
663  protected:
672 
680  bool m_svc;
682 
691  {
695  bool running_;
696  };
697 
706 
715  bool m_nowait;
716 
721 
722  }; // class PeriodicExecutionContext
723 }; // namespace RTC
724 
725 #ifdef WIN32
726 #pragma warning( default : 4290 )
727 #endif
728 
729 
730 extern "C"
731 {
740 };
741 
742 #endif // RTC_PERIODICEXECUTIONCONTEXT_H
virtual ~PeriodicExecutionContext(void)
デストラクタ
virtual RTC::ReturnCode_t deactivate_component(RTC::LightweightRTObject_ptr comp)
RTコンポーネントを非アクティブ化する
virtual RTC::ReturnCode_t onDeactivated(RTC_impl::RTObjectStateMachine *comp, long int count)
onDeactivated() template function
bool stringTo(To &val, const char *str)
与えられたstd::stringをオブジェクトに変換
Definition: stringutil.h:633
virtual RTC::ExecutionContextProfile * get_profile(void)
ExecutionContextProfile を取得する
Mutex クラス
Definition: Mutex.h:40
virtual RTC::ReturnCode_t set_rate(CORBA::Double rate)
ExecutionContext の実行周期(Hz)を設定する
coil::Mutex m_svcmutex
Definition: PeriodicExecutionContext.h:681
ExecutionContext用基底クラス
Definition: ExecutionContextBase.h:369
worker 用状態変数クラス
Definition: PeriodicExecutionContext.h:690
virtual RTC::ReturnCode_t onStopping()
onStopping() template function
PeriodicExecutionContext クラス
Definition: PeriodicExecutionContext.h:60
Manager クラス
Definition: Manager.h:81
virtual RTC::ReturnCode_t onReset(RTC_impl::RTObjectStateMachine *comp, long int count)
onReset() template function
coil::Mutex mutex_
Definition: PeriodicExecutionContext.h:692
virtual int svc(void)
ExecutionContext 用のスレッド実行関数
ExecutionContext base class.
coil::CpuMask m_cpu
CPU affinity mask list.
Definition: PeriodicExecutionContext.h:720
WorkerThreadCtrl m_workerthread
svn用の状態変数
Definition: PeriodicExecutionContext.h:705
virtual RTC::ReturnCode_t onWaitingActivated(RTC_impl::RTObjectStateMachine *comp, long int count)
onWaitingActivated() template function
virtual RTC::ReturnCode_t stop(void)
ExecutionContext の実行を停止
virtual int close(unsigned long flags)
ExecutionContext 用のスレッド実行関数
virtual int open(void *args)
ExecutionContext用アクティビティスレッドを生成する
virtual CORBA::Double get_rate(void)
ExecutionContext の実行周期(Hz)を取得する
Properties *const findNode(const std::string &key) const
ノードを取得する
virtual RTC::ReturnCode_t onActivated(RTC_impl::RTObjectStateMachine *comp, long int count)
onActivated() template function
virtual RTC::ExecutionKind get_kind(void)
ExecutionKind を取得する
virtual RTC::ReturnCode_t onAddedComponent(RTC::LightweightRTObject_ptr rtobj)
onAddedComponent() template function
virtual RTC::ReturnCode_t activate_component(RTC::LightweightRTObject_ptr comp)
RTコンポーネントをアクティブ化する
bool running_
Definition: PeriodicExecutionContext.h:695
coil::Condition< coil::Mutex > cond_
Definition: PeriodicExecutionContext.h:694
virtual RTC::ReturnCode_t reset_component(RTC::LightweightRTObject_ptr comp)
RTコンポーネントをリセットする
bool m_svc
ExecutionContext のスレッド実行フラグ
Definition: PeriodicExecutionContext.h:680
virtual RTC::ReturnCode_t add_component(RTC::LightweightRTObject_ptr comp)
RTコンポーネントを追加する
virtual RTC::ReturnCode_t onStarted()
onStarted() template function
virtual RTC::ReturnCode_t start(void)
ExecutionContext の実行を開始
bool m_nowait
ExecutionContext 即時実行(wait無し実行)フラグ
Definition: PeriodicExecutionContext.h:715
virtual RTC::ReturnCode_t onWaitingReset(RTC_impl::RTObjectStateMachine *comp, long int count)
onWaitingReset() template function
Logger クラス
Definition: SystemLogger.h:99
RTC::Logger rtclog
ロガーストリーム
Definition: PeriodicExecutionContext.h:671
bool threadRunning()
Definition: PeriodicExecutionContext.h:658
Definition: RTObjectStateMachine.h:46
void PeriodicExecutionContextInit(RTC::Manager *manager)
ECFactoryへの登録のための初期化関数
PeriodicExecutionContext()
デフォルトコンストラクタ
プロパティセットを表現するクラス
Definition: Properties.h:101
virtual RTC::ReturnCode_t onWaitingDeactivated(RTC_impl::RTObjectStateMachine *comp, long int count)
onWaitingDeactivated() template function
virtual RTC::ReturnCode_t remove_component(RTC::LightweightRTObject_ptr comp)
RTコンポーネントを参加者リストから削除する
std::vector< unsigned int > CpuMask
Definition: Affinity.h:30
Task クラス
Definition: Task.h:39
Processor affinity operation class.
RTC::LightweightRTObject_ptr LightweightRTObject_ptr
Definition: ExecutionContextWorker.h:43
WorkerThreadCtrl()
Definition: PeriodicExecutionContext.h:692
virtual RTC::ReturnCode_t onRemovedComponent(RTC::LightweightRTObject_ptr rtobj)
onRemovedComponent() template function
void getProperty(coil::Properties &prop, const char *key, T &value)
Definition: PeriodicExecutionContext.h:591
virtual CORBA::Boolean is_running(void)
ExecutionContext 実行状態確認関数
virtual RTC::LifeCycleState get_component_state(RTC::LightweightRTObject_ptr comp)
RTコンポーネントの状態を取得する
virtual void init(coil::Properties &props)
ExecutionContextの初期化を行う
Definition: PeriodicExecutionContext.h:38
virtual void setCpuAffinity(coil::Properties &props)
setting CPU affinity from given properties