20 #ifndef RTC_PERIODICEXECUTIONCONTEXT_H
21 #define RTC_PERIODICEXECUTIONCONTEXT_H
30 #include <rtm/idl/RTCSkel.h>
31 #include <rtm/idl/OpenRTMSkel.h>
36 #define NUM_OF_LIFECYCLESTATE 4
39 #pragma warning( disable : 4290 )
113 double rate = 1000.0);
175 virtual int open(
void *args);
196 virtual int svc(
void);
225 virtual int close(
unsigned long flags);
255 throw (CORBA::SystemException);
284 virtual ReturnCode_t
start(
void)
285 throw (CORBA::SystemException);
313 virtual ReturnCode_t
stop(
void)
314 throw (CORBA::SystemException);
336 virtual CORBA::Double
get_rate(
void)
337 throw (CORBA::SystemException);
368 virtual ReturnCode_t
set_rate(CORBA::Double rate)
369 throw (CORBA::SystemException);
405 throw (CORBA::SystemException);
440 throw (CORBA::SystemException);
474 throw (CORBA::SystemException);
503 throw (CORBA::SystemException);
524 virtual ExecutionKind
get_kind(
void)
525 throw (CORBA::SystemException);
558 virtual ReturnCode_t
add_component(LightweightRTObject_ptr comp)
559 throw (CORBA::SystemException);
611 throw (CORBA::SystemException);
633 throw (CORBA::SystemException);
694 m_sm.setListener(
this);
704 st.
prev = INACTIVE_STATE;
705 st.
curr = INACTIVE_STATE;
706 st.
next = INACTIVE_STATE;
707 m_sm.setStartState(st);
708 m_sm.goTo(INACTIVE_STATE);
742 virtual void on_startup(
void) = 0;
760 virtual void on_shutdown(
void) = 0;
783 virtual void on_activated(
const ECStates& st) = 0;
806 virtual void on_deactivated(
const ECStates& st) = 0;
829 virtual void on_aborting(
const ECStates& st) = 0;
856 virtual void on_error(
const ECStates& st) = 0;
883 virtual void on_reset(
const ECStates& st) = 0;
911 virtual void on_execute(
const ECStates& st) = 0;
939 virtual void on_state_update(
const ECStates& st) = 0;
958 virtual void on_rate_changed(
void) = 0;
978 virtual void worker(
void) {
return m_sm.worker();}
997 virtual ExecContextState
get_state(
void){
return m_sm.getState();}
1046 template <
class Object>
1070 DFP(Object obj, ExecutionContextHandle_t
id)
1139 if (
m_obj->on_activated(
ec_id) != RTC::RTC_OK)
1141 m_sm.goTo(ERROR_STATE);
1243 m_sm.goTo(ERROR_STATE);
1278 m_sm.goTo(ERROR_STATE);
1311 if (
m_obj->on_state_update(
ec_id) != RTC::RTC_OK)
1313 m_sm.goTo(ERROR_STATE);
1369 Comp(LightweightRTObject_ptr ref, OpenRTM::DataFlowComponent_ptr dfp,
1370 ExecutionContextHandle_t
id)
1371 :
_ref(LightweightRTObject::_duplicate(ref)),
1372 _sm(OpenRTM::DataFlowComponent::_duplicate(dfp), id)
1404 : m_comp(LightweightRTObject::_duplicate(comp)) {}
1407 return comp.
_ref->_is_equivalent(m_comp);
1574 RTObject_var m_comp;
1577 : m_comp(RTObject::_duplicate(comp)) {}
1580 return m_comp->_is_equivalent(comp);
1587 #pragma warning( default : 4290 )
1603 #endif // RTC_PERIODICEXECUTIONCONTEXT_H
bool m_active
管理対象コンポーネントの動作状態フラグ
Definition: PeriodicExecutionContext.h:1357
virtual ReturnCode_t stop(void)
ExecutionContext の実行を停止
worker 用状態変数クラス
Definition: PeriodicExecutionContext.h:1517
DFP クラス
Definition: PeriodicExecutionContext.h:1047
LightweightRTObject_var m_comp
Definition: PeriodicExecutionContext.h:1402
virtual ExecutionContextService_ptr getObjRef(void)
CORBA オブジェクト参照の取得
Definition: PeriodicExecutionContext.h:149
virtual ReturnCode_t set_rate(CORBA::Double rate)
ExecutionContext の実行周期(Hz)を設定する
void operator()(Comp &comp)
Definition: PeriodicExecutionContext.h:1465
virtual ReturnCode_t deactivate_component(LightweightRTObject_ptr comp)
RTコンポーネントを非アクティブ化する
std::vector< Comp > m_comps
コンポーネントの参加者リスト
Definition: PeriodicExecutionContext.h:1478
virtual void on_reset(const ECStates &st)=0
RTコンポーネントをリセットする時に呼ばれる純粋仮想関数
Mutex クラス
Definition: Mutex.h:40
virtual void on_activated(const ECStates &st)=0
RTコンポーネントがアクティブ化された時に呼ばれる純粋仮想関数
Definition: PeriodicExecutionContext.h:1572
ExecutionContext用基底クラス
Definition: ExecutionContextBase.h:51
コンポーネント管理用構造体
Definition: PeriodicExecutionContext.h:1367
virtual void on_state_update(const ECStates &st)=0
RTコンポーネント実行時に定期的に呼ばれる純粋仮想関数
~Comp(void)
Definition: PeriodicExecutionContext.h:1375
void operator()(Comp &comp)
Definition: PeriodicExecutionContext.h:1450
bool m_svc
ExecutionContext のスレッド実行フラグ
Definition: PeriodicExecutionContext.h:1508
RTコンポーネントクラス
Definition: RTObject.h:89
DFP< OpenRTM::DataFlowComponent_var > _sm
Definition: PeriodicExecutionContext.h:1390
Comp(LightweightRTObject_ptr ref, OpenRTM::DataFlowComponent_ptr dfp, ExecutionContextHandle_t id)
Definition: PeriodicExecutionContext.h:1369
void on_error(const ECStates &st)
RTコンポーネントがエラー状態の時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1215
Manager クラス
Definition: Manager.h:80
virtual ReturnCode_t add_component(LightweightRTObject_ptr comp)
RTコンポーネントを追加する
void on_rate_changed(void)
ExecutionContext の実行周期変更時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1336
#define NUM_OF_LIFECYCLESTATE
Definition: PeriodicExecutionContext.h:36
virtual ExecutionKind get_kind(void)
ExecutionKind を取得する
virtual ReturnCode_t start(void)
ExecutionContext の実行を開始
ExecutionContext base class.
void on_deactivated(const ECStates &st)
RTコンポーネントが非アクティブ化された時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1167
virtual ~PeriodicExecutionContext(void)
デストラクタ
virtual int close(unsigned long flags)
ExecutionContext 用のスレッド実行関数
virtual ReturnCode_t activate_component(LightweightRTObject_ptr comp)
RTコンポーネントをアクティブ化する
ワーカー実行用ファンクタ
Definition: PeriodicExecutionContext.h:1463
virtual void on_aborting(const ECStates &st)=0
RTコンポーネントでエラーが発生した時に呼ばれる純粋仮想関数
void on_aborting(const ECStates &st)
RTコンポーネントでエラーが発生した時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1191
PeriodicExecutionContext()
デフォルトコンストラクタ
void on_activated(const ECStates &st)
RTコンポーネントがアクティブ化された時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1137
Object m_obj
管理対象コンポーネント
Definition: PeriodicExecutionContext.h:1348
TimeValue クラス
Definition: TimeValue.h:40
RTComponent manager class.
Worker m_worker
svn用の状態変数
Definition: PeriodicExecutionContext.h:1532
bool operator()(RTObject_ptr comp)
Definition: PeriodicExecutionContext.h:1578
virtual CORBA::Boolean is_running(void)
ExecutionContext 実行状態確認関数
Comp(const Comp &comp)
Definition: PeriodicExecutionContext.h:1378
virtual void on_execute(const ECStates &st)=0
RTコンポーネント実行時に定期的に呼ばれる純粋仮想関数
LifeCycleState ExecContextState
Definition: PeriodicExecutionContext.h:639
virtual int svc(void)
ExecutionContext 用のスレッド実行関数
DFP(Object obj, ExecutionContextHandle_t id)
デフォルトコンストラクタ
Definition: PeriodicExecutionContext.h:1070
状態マシンクラス
Definition: StateMachine.h:263
bool m_nowait
ExecutionContext 即時実行(wait無し実行)フラグ
Definition: PeriodicExecutionContext.h:1570
void on_state_update(const ECStates &st)
RTコンポーネント実行時に定期的に呼ばれる関数
Definition: PeriodicExecutionContext.h:1309
bool operator()(Comp &comp)
Definition: PeriodicExecutionContext.h:1405
Worker()
Definition: PeriodicExecutionContext.h:1519
virtual ~DFPBase(void)
デストラクタ
Definition: PeriodicExecutionContext.h:724
on_rate_changed 起動用ファンクタ
Definition: PeriodicExecutionContext.h:1448
virtual void worker(void)
状態遷移を実行するワーカーを取得する
Definition: PeriodicExecutionContext.h:978
coil::Mutex m_profileMutex
Definition: PeriodicExecutionContext.h:1542
bool running_
Definition: PeriodicExecutionContext.h:1522
coil::Mutex mutex_
Definition: PeriodicExecutionContext.h:1519
State prev
Definition: StateMachine.h:58
on_startup 起動用ファンクタ
Definition: PeriodicExecutionContext.h:1418
virtual ExecContextState get_state(void)
現在の状態を取得する
Definition: PeriodicExecutionContext.h:997
Comp & operator=(const Comp &comp)
Definition: PeriodicExecutionContext.h:1382
Logger クラス
Definition: SystemLogger.h:99
DFPBase クラス
Definition: PeriodicExecutionContext.h:670
coil::Condition< coil::Mutex > cond_
Definition: PeriodicExecutionContext.h:1521
virtual ReturnCode_t remove_component(LightweightRTObject_ptr comp)
RTコンポーネントを参加者リストから削除する
void PeriodicExecutionContextInit(RTC::Manager *manager)
ECFactoryへの登録のための初期化関数
virtual ReturnCode_t reset_component(LightweightRTObject_ptr comp)
RTコンポーネントをリセットする
virtual ExecutionContextProfile * get_profile(void)
ExecutionContextProfile を取得する
virtual int open(void *args)
ExecutionContext用アクティビティスレッドを生成する
virtual CORBA::Double get_rate(void)
ExecutionContext の実行周期(Hz)を取得する
Logger rtclog
ロガーストリーム
Definition: PeriodicExecutionContext.h:1488
State curr
Definition: StateMachine.h:57
ExecutionContextProfile m_profile
ExecutionContextProfile.
Definition: PeriodicExecutionContext.h:1541
void on_startup(void)
ExecutionContext 実行開始時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1090
Task クラス
Definition: Task.h:39
void operator()(Comp &comp)
Definition: PeriodicExecutionContext.h:1435
std::vector< Comp >::iterator CompItr
Definition: PeriodicExecutionContext.h:1479
find_comp(LightweightRTObject_ptr comp)
Definition: PeriodicExecutionContext.h:1403
virtual LifeCycleState get_component_state(LightweightRTObject_ptr comp)
RTコンポーネントの状態を取得する
DFPBase(RTC::ExecutionContextHandle_t id)
コンストラクタ
Definition: PeriodicExecutionContext.h:691
ExecutionContextService_var m_ref
ExecutionContextService オブジェクトへの参照
Definition: PeriodicExecutionContext.h:1560
void on_shutdown(void)
ExecutionContext 停止時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1110
PeriodicExecutionContext クラス
Definition: PeriodicExecutionContext.h:64
State machine template class.
virtual void on_error(const ECStates &st)=0
RTコンポーネントがエラー状態の時に呼ばれる純粋仮想関数
ExecutionContextHandle_t ec_id
参加している ExecutionContext の ID
Definition: PeriodicExecutionContext.h:1006
bool m_running
ExecutionContext の実行状態 true: running, false: stopped.
Definition: PeriodicExecutionContext.h:1499
State next
Definition: StateMachine.h:59
LightweightRTObject_var _ref
Definition: PeriodicExecutionContext.h:1389
RTC_Utils::StateMachine< ExecContextState, DFPBase > m_sm
管理対象RTコンポーネントのステートマシン
Definition: PeriodicExecutionContext.h:1015
virtual void on_deactivated(const ECStates &st)=0
RTコンポーネントが非アクティブ化された時に呼ばれる純粋仮想関数
void on_reset(const ECStates &st)
RTコンポーネントをリセットする時に呼ばれる関数
Definition: PeriodicExecutionContext.h:1239
virtual RTC::ReturnCode_t bindComponent(RTObject_impl *rtc)
コンポーネントをバインドする。
on_shutdown 起動用ファンクタ
Definition: PeriodicExecutionContext.h:1433
coil::TimeValue m_period
ExecutionContext の実行周期
Definition: PeriodicExecutionContext.h:1551
コンポーネント検索用ファンクタ
Definition: PeriodicExecutionContext.h:1400
void on_execute(const ECStates &st)
RTコンポーネント実行時に定期的に呼ばれる関数
Definition: PeriodicExecutionContext.h:1274
find_participant(RTObject_ptr comp)
Definition: PeriodicExecutionContext.h:1576
void operator()(Comp &comp)
Definition: PeriodicExecutionContext.h:1420