ExecutionContextWorker クラス
[詳解]
#include <ExecutionContextWorker.h>
ExecutionContextWorker クラス
RTCの状態マシン・プロキシクラス RTObjectStateMachine を保持・管理 し、コールバックを実際にコールするためのワーカークラスインターフェー スクラス。ECの実装者は、ExecutionContextBase を継承し、メンバ変数 として保持されているこの ExecutionContextWorker クラスのインター フェース経由でRTObjectのコールバックをコールすることになる。
- ECのオブジェクトリファレンスのセッタ・ゲッター
- ECの実行・停止関係関数
- RTCのアクティブ化・非アクティブ化関数
- RTC::ReturnCode_t activateComponent(RTC::LightweightRTObject_ptr comp, RTObjectStateMachine*& rtobj);
- RTC::ReturnCode_t waitActivateComplete(RTObjectStateMachine*& rtobj, coil::TimeValue timeout = 1.0, long int cycle = 1000);
- RTC::ReturnCode_t deactivateComponent(RTC::LightweightRTObject_ptr comp, * RTObjectStateMachine*& rtobj);
- RTC::ReturnCode_t waitDeactivateComplete(RTObjectStateMachine*& rtobj, coil::TimeValue timeout = 1.0, long int cycle = 1000);
- RTC::ReturnCode_t resetComponent(RTC::LightweightRTObject_ptr com, RTObjectStateMachine*& rtobj);
- RTC::ReturnCode_t waitResetComplete(RTObjectStateMachine*& rtobj, coil::TimeValue timeout = 1.0, long int cycle = 1000);
- RTC::LifeCycleState getComponentState(RTC::LightweightRTObject_ptr comp);
- const char* getStateString(RTC::LifeCycleState state)
- RTC追加・削除系関数
- 状態問い合わせ系関数
- Workerの駆動およびコールバック
- から
- 1.2
RTC_impl::ExecutionContextWorker::ExecutionContextWorker |
( |
| ) |
|
デフォルトコンストラクタ
デフォルトコンストラクタ プロファイルに以下の項目を設定する。
- kind : PERIODIC
- rate : 0.0
virtual RTC_impl::ExecutionContextWorker::~ExecutionContextWorker |
( |
void |
| ) |
|
|
virtual |
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::activateComponent |
( |
RTC::LightweightRTObject_ptr |
comp, |
|
|
RTObjectStateMachine *& |
rtobj |
|
) |
| |
RTコンポーネントをアクティブ化する
Inactive 状態にあるRTコンポーネントをActive に遷移させ、アクティ ブ化する。この操作が呼ばれた結果、on_activate が呼び出される。指 定したRTコンポーネントが参加者リストに含まれない場合は、 BAD_PARAMETER が返される。指定したRTコンポーネントの状態が Inactive 以外の場合は、PRECONDITION_NOT_MET が返される。
- 引数
-
- 戻り値
- ReturnCode_t 型のリターンコード
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::addComponent |
( |
RTC::LightweightRTObject_ptr |
comp | ) |
|
RTコンポーネントを追加する
指定したRTコンポーネントを"参加者リスト"に追加する。追加された RTコンポーネントは attach_context が呼ばれ、Inactive 状態に遷移 する。指定されたRTコンポーネントが null の場合は、BAD_PARAMETER が 返される。指定されたRTコンポーネントが DataFlowComponent 以外の 場合は、BAD_PARAMETER が返される。
この関数が呼ばれた段階では、他の RTC は StateMachine 内のコール バック関数を呼び出し中の可能性があり、まずは "参加者リスト:
m_addedComps" に RTC を追加しておく。コールバック呼び出しが一旦 終わった段階で同期的に updateComponentList() 関数が呼ばれ、この Worker に正式に RTC が参加した状態となる。
- 引数
-
- 戻り値
- ReturnCode_t 型のリターンコード
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::bindComponent |
( |
RTC::RTObject_impl * |
rtc | ) |
|
コンポーネントをバインドする。
コンポーネントに owned context をバインドする。引数に渡される RTObject_impl は、この EC の owner であり、内部的には RTObject の bindContext() をコール氏、ec_idを取得する。ec_id は ECOTHER_OFFSET よりも小さい。その後、RTObject のプロキシである RTObjectStateMachine を生成し、コンポーネントのリストに加える。
- 引数
-
- 戻り値
- ReturnCode_t 型のリターンコード
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::deactivateComponent |
( |
RTC::LightweightRTObject_ptr |
comp, |
|
|
RTObjectStateMachine *& |
rtobj |
|
) |
| |
RTコンポーネントを非アクティブ化する
Inactive 状態にあるRTコンポーネントを非アクティブ化し、Inactive に遷移させる。この操作が呼ばれた結果、on_deactivate が呼び出され る。指定したRTコンポーネントが参加者リストに含まれない場合は、 BAD_PARAMETER が返される。指定したRTコンポーネントの状態が Active 以外の場合は、PRECONDITION_NOT_MET が返される。 a
- 引数
-
- 戻り値
- ReturnCode_t 型のリターンコード
RTObjectStateMachine* RTC_impl::ExecutionContextWorker::findComponent |
( |
RTC::LightweightRTObject_ptr |
comp | ) |
|
RTC::LifeCycleState RTC_impl::ExecutionContextWorker::getComponentState |
( |
RTC::LightweightRTObject_ptr |
comp | ) |
|
RTコンポーネントの状態を取得する
指定したRTコンポーネントの状態(LifeCycleState)を取得する。指定し たRTコンポーネントが参加者リストに含まれない場合は、 UNKNOWN_STATE が返される。
- 引数
-
- 戻り値
- 現在の状態(LifeCycleState)
RTC::ExecutionContextService_ptr RTC_impl::ExecutionContextWorker::getECRef |
( |
| ) |
|
const char* RTC_impl::ExecutionContextWorker::getStateString |
( |
RTC::LifeCycleState |
state | ) |
|
|
inline |
void RTC_impl::ExecutionContextWorker::invokeWorker |
( |
| ) |
|
void RTC_impl::ExecutionContextWorker::invokeWorkerDo |
( |
| ) |
|
void RTC_impl::ExecutionContextWorker::invokeWorkerPostDo |
( |
| ) |
|
void RTC_impl::ExecutionContextWorker::invokeWorkerPreDo |
( |
| ) |
|
bool RTC_impl::ExecutionContextWorker::isAllCurrentState |
( |
RTC::LifeCycleState |
state | ) |
|
bool RTC_impl::ExecutionContextWorker::isAllNextState |
( |
RTC::LifeCycleState |
state | ) |
|
bool RTC_impl::ExecutionContextWorker::isOneOfCurrentState |
( |
RTC::LifeCycleState |
state | ) |
|
bool RTC_impl::ExecutionContextWorker::isOneOfNextState |
( |
RTC::LifeCycleState |
state | ) |
|
CORBA::Boolean RTC_impl::ExecutionContextWorker::isRunning |
( |
void |
| ) |
|
ExecutionContext 実行状態確認関数
この操作は ExecutionContext が Runnning 状態の場合に true を返す。 Executioncontext が Running の間、当該 Executioncontext に参加し ている全てのアクティブRTコンポーネントが、ExecutionContext の実 行種類に応じて実行される。
- 戻り値
- 状態確認関数(動作中:true、停止中:false)
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::rateChanged |
( |
| ) |
|
ExecutionContext の実行周期が変更された
ExecutionContext の実行周期が変更された場合のコールバックを呼び 出す。ECの実装クラスの set_rate() オペレーションが呼び出された場 合、ExecutionContextProfile::setRate() が呼び出され、プロファイ ルの周期値が更新されるとともに、この関数が呼ばれ、 RTObjectStateMachine::onRateChagned() が呼び出される。
- 戻り値
- ReturnCode_t 型のリターンコード
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::removeComponent |
( |
RTC::LightweightRTObject_ptr |
comp | ) |
|
RTコンポーネントを参加者リストから削除する
指定したRTコンポーネントを参加者リストから削除する。削除された RTコンポーネントは detach_context が呼ばれる。指定されたRTコンポー ネントが参加者リストに登録されていない場合は、BAD_PARAMETER が返 される。
- 引数
-
- 戻り値
- ReturnCode_t 型のリターンコード
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::resetComponent |
( |
RTC::LightweightRTObject_ptr |
com, |
|
|
RTObjectStateMachine *& |
rtobj |
|
) |
| |
RTコンポーネントをリセットする
Error 状態のRTコンポーネントの復帰を試みる。この操作が呼ばれた結 果、on_reset が呼び出される。指定したRTコンポーネントが参加者リ ストに含まれない場合は、BAD_PARAMETER が返される。指定したRTコン ポーネントの状態が Error 以外の場合は、PRECONDITION_NOT_MET が返 される。
- 引数
-
- 戻り値
- ReturnCode_t 型のリターンコード
void RTC_impl::ExecutionContextWorker::setECRef |
( |
RTC::ExecutionContextService_ptr |
ref | ) |
|
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::start |
( |
void |
| ) |
|
ExecutionContext の実行を開始
ExecutionContext の実行状態を Runnning とするためのリクエストを 発行する。ExecutionContext の状態が遷移すると ComponentAction::on_startup が呼び出される。参加しているRTコンポー ネントが、初期化されるまで ExecutionContext を開始することはでき ない。ExecutionContext は複数回開始/停止を繰り返すことができる。
- 戻り値
- ReturnCode_t 型のリターンコード
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::startThread |
( |
void |
| ) |
|
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::stop |
( |
void |
| ) |
|
ExecutionContext の実行を停止
ExecutionContext の状態を Stopped とするためのリクエストを発行す る。遷移が発生した場合は、ComponentAction::on_shutdown が呼び出 される。参加しているRTコンポーネントが終了する前に ExecutionContext を停止する必要がある。ExecutionContext は複数回 開始/停止を繰り返すことができる。
- 戻り値
- ReturnCode_t 型のリターンコード
RTC::ReturnCode_t RTC_impl::ExecutionContextWorker::stopThread |
( |
void |
| ) |
|
void RTC_impl::ExecutionContextWorker::updateComponentList |
( |
| ) |
|
coil::Mutex RTC_impl::ExecutionContextWorker::m_addedMutex |
|
mutableprotected |
RTC::ExecutionContextService_var RTC_impl::ExecutionContextWorker::m_ref |
|
protected |
coil::Mutex RTC_impl::ExecutionContextWorker::m_removedMutex |
|
mutableprotected |
bool RTC_impl::ExecutionContextWorker::m_running |
|
protected |
ExecutionContext の実行状態 true: running, false: stopped.
このクラス詳解は次のファイルから抽出されました: