OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
RTC_exp::PeriodicExecutionContext クラス

PeriodicExecutionContext クラス [詳解]

#include <PeriodicExecutionContext.h>

RTC_exp::PeriodicExecutionContext の継承関係図
RTC_exp::PeriodicExecutionContext 連携図

クラス

struct  WorkerThreadCtrl
 worker 用状態変数クラス [詳解]
 

公開メンバ関数

 PeriodicExecutionContext ()
 デフォルトコンストラクタ
 
 ~PeriodicExecutionContext () override
 デストラクタ
 
void init (coil::Properties &props) override
 ExecutionContextの初期化を行う
 
int open (void *args) override
 ExecutionContext用アクティビティスレッドを生成する
 
int svc () override
 ExecutionContext 用のスレッド実行関数
 
int close (unsigned long flags) override
 ExecutionContext 用のスレッド実行関数
 
CORBA::Boolean is_running () override
 ExecutionContext 実行状態確認関数
 
RTC::ReturnCode_t start () override
 ExecutionContext の実行を開始
 
RTC::ReturnCode_t stop () override
 ExecutionContext の実行を停止
 
CORBA::Double get_rate () override
 ExecutionContext の実行周期(Hz)を取得する
 
RTC::ReturnCode_t set_rate (CORBA::Double rate) override
 ExecutionContext の実行周期(Hz)を設定する
 
RTC::ReturnCode_t activate_component (RTC::LightweightRTObject_ptr comp) override
 RTコンポーネントをアクティブ化する
 
RTC::ReturnCode_t deactivate_component (RTC::LightweightRTObject_ptr comp) override
 RTコンポーネントを非アクティブ化する
 
RTC::ReturnCode_t reset_component (RTC::LightweightRTObject_ptr comp) override
 RTコンポーネントをリセットする
 
RTC::LifeCycleState get_component_state (RTC::LightweightRTObject_ptr comp) override
 RTコンポーネントの状態を取得する
 
RTC::ExecutionKind get_kind () override
 ExecutionKind を取得する
 
RTC::ReturnCode_t add_component (RTC::LightweightRTObject_ptr comp) override
 RTコンポーネントを追加する
 
RTC::ReturnCode_t remove_component (RTC::LightweightRTObject_ptr comp) override
 RTコンポーネントを参加者リストから削除する
 
RTC::ExecutionContextProfile * get_profile () override
 ExecutionContextProfile を取得する
 
- 基底クラス RTC::ExecutionContextBase に属する継承公開メンバ関数
 ExecutionContextBase (const char *name)
 コンストラクタ
 
virtual ~ExecutionContextBase ()
 仮想デストラクタ
 
virtual RTC::ReturnCode_t bindComponent (RTC::RTObject_impl *rtc)
 コンポーネントをバインドする。
 
CORBA::Boolean isRunning ()
 ExecutionContext 実行状態確認関数
 
RTC::ReturnCode_t start ()
 ExecutionContext の実行を開始
 
double getRate () const
 ExecutionContext の実行周期(Hz)を取得する
 
std::chrono::nanoseconds getPeriod () const
 
RTC::ReturnCode_t setRate (double rate)
 ExecutionContext の実行周期(Hz)を設定する
 
RTC::ReturnCode_t addComponent (RTC::LightweightRTObject_ptr comp)
 RTコンポーネントを追加する
 
RTC::ReturnCode_t removeComponent (RTC::LightweightRTObject_ptr comp)
 RTコンポーネントを参加者リストから削除する
 
RTC::ReturnCode_t activateComponent (RTC::LightweightRTObject_ptr comp)
 RTコンポーネントをアクティブ化する
 
RTC::ReturnCode_t deactivateComponent (RTC::LightweightRTObject_ptr comp)
 RTコンポーネントを非アクティブ化する
 
RTC::ReturnCode_t resetComponent (RTC::LightweightRTObject_ptr comp)
 RTコンポーネントをリセットする
 
RTC::LifeCycleState getComponentState (RTC::LightweightRTObject_ptr comp)
 RTコンポーネントの状態を取得する
 
RTC::ExecutionKind getKind () const
 ExecutionKind を取得する
 
RTC::ExecutionContextProfile * getProfile ()
 Profileを取得する
 
void setObjRef (RTC::ExecutionContextService_ptr ec_ptr)
 CORBA オブジェクト参照の取得
 
RTC::ExecutionContextService_ptr getObjRef () const
 CORBA オブジェクト参照の取得
 
RTC::ReturnCode_t setKind (RTC::ExecutionKind kind)
 ExecutionKind を設定する
 
RTC::ReturnCode_t setOwner (RTC::LightweightRTObject_ptr comp)
 Ownerコンポーネントをセットする。
 
RTC::RTObject_ptr getOwner () const
 Ownerコンポーネントの参照を取得する
 
const RTC::RTCList & getComponentList () const
 RTコンポーネントの参加者リストを取得する
 
void setProperties (coil::Properties &props)
 Propertiesをセットする
 
coil::Properties getProperties () const
 Propertiesを取得する
 
const RTC::ExecutionContextProfile & getProfile () const
 Profileを取得する
 
bool isAllCurrentState (RTC::LifeCycleState state)
 
bool isAllNextState (RTC::LifeCycleState state)
 
bool isOneOfCurrentState (RTC::LifeCycleState state)
 
bool isOneOfNextState (RTC::LifeCycleState state)
 
void invokeWorker ()
 
void invokeWorkerPreDo ()
 
void invokeWorkerDo ()
 
void invokeWorkerPostDo ()
 

限定公開メンバ関数

template<class T >
void getProperty (coil::Properties &prop, const char *key, T &value)
 
RTC::ReturnCode_t onStarted () override
 onStarted() template function
 
RTC::ReturnCode_t onStopping () override
 onStopping() template function
 
RTC::ReturnCode_t onAddedComponent (RTC::LightweightRTObject_ptr rtobj) override
 onAddedComponent() template function
 
RTC::ReturnCode_t onRemovedComponent (RTC::LightweightRTObject_ptr rtobj) override
 onRemovedComponent() template function
 
RTC::ReturnCode_t onWaitingActivated (RTC_impl::RTObjectStateMachine *comp, long int count) override
 onWaitingActivated() template function
 
RTC::ReturnCode_t onActivated (RTC_impl::RTObjectStateMachine *comp, long int count) override
 onActivated() template function
 
RTC::ReturnCode_t onWaitingDeactivated (RTC_impl::RTObjectStateMachine *comp, long int count) override
 onWaitingDeactivated() template function
 
RTC::ReturnCode_t onDeactivated (RTC_impl::RTObjectStateMachine *comp, long int count) override
 onDeactivated() template function
 
RTC::ReturnCode_t onWaitingReset (RTC_impl::RTObjectStateMachine *comp, long int count) override
 onWaitingReset() template function
 
RTC::ReturnCode_t onReset (RTC_impl::RTObjectStateMachine *comp, long int count) override
 onReset() template function
 
virtual void setCpuAffinity (coil::Properties &props)
 setting CPU affinity from given properties
 
bool threadRunning ()
 
- 基底クラス RTC::ExecutionContextBase に属する継承限定公開メンバ関数
virtual bool onIsRunning (bool running)
 
virtual RTC::ReturnCode_t onStarting ()
 
virtual RTC::ReturnCode_t onStopped ()
 
virtual double onGetRate (double rate) const
 
virtual double onSettingRate (double rate)
 
virtual RTC::ReturnCode_t onSetRate (double)
 
virtual RTC::ReturnCode_t onAddingComponent (RTC::LightweightRTObject_ptr)
 
virtual RTC::ReturnCode_t onRemovingComponent (RTC::LightweightRTObject_ptr)
 
virtual RTC::ReturnCode_t onActivating (RTC::LightweightRTObject_ptr)
 
virtual RTC::ReturnCode_t onDeactivating (RTC::LightweightRTObject_ptr)
 
virtual RTC::ReturnCode_t onResetting (RTC::LightweightRTObject_ptr)
 
virtual RTC::LifeCycleState onGetComponentState (RTC::LifeCycleState state)
 
virtual RTC::ExecutionKind onGetKind (RTC::ExecutionKind kind) const
 
virtual RTC::ExecutionContextProfile * onGetProfile (RTC::ExecutionContextProfile *&profile)
 

限定公開変数類

RTC::Logger rtclog {"periodic_ec"}
 ロガーストリーム
 
bool m_svc {false}
 ExecutionContext のスレッド実行フラグ
 
std::mutex m_svcmutex
 
WorkerThreadCtrl m_workerthread
 svn用の状態変数
 
bool m_nowait {false}
 ExecutionContext 即時実行(wait無し実行)フラグ
 
coil::CpuMask m_cpu
 CPU affinity mask list
 
- 基底クラス RTC::ExecutionContextBase に属する継承限定公開変数類
RTC::Logger rtclog
 
RTC_impl::ExecutionContextWorker m_worker
 
RTC_impl::ExecutionContextProfile m_profile
 
std::chrono::nanoseconds m_activationTimeout
 
std::chrono::nanoseconds m_deactivationTimeout
 
std::chrono::nanoseconds m_resetTimeout
 
bool m_syncActivation
 
bool m_syncDeactivation
 
bool m_syncReset
 

その他の継承メンバ

- 基底クラス RTC::ExecutionContextBase に属する継承静的公開メンバ関数
static const char * getStateString (RTC::LifeCycleState state)
 
static const char * getKindString (RTC::ExecutionKind kind)
 ExecutionKind を文字列化する
 

詳解

PeriodicExecutionContext クラス

Periodic Sampled Data Processing(周期実行用)ExecutionContextクラス。

から
0.4.0

構築子と解体子

◆ PeriodicExecutionContext()

RTC_exp::PeriodicExecutionContext::PeriodicExecutionContext ( )

デフォルトコンストラクタ

デフォルトコンストラクタ プロファイルに以下の項目を設定する。

  • kind : PERIODIC
  • rate : 0.0

◆ ~PeriodicExecutionContext()

RTC_exp::PeriodicExecutionContext::~PeriodicExecutionContext ( )
override

デストラクタ

デストラクタ

関数詳解

◆ activate_component()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::activate_component ( RTC::LightweightRTObject_ptr comp)
override

RTコンポーネントをアクティブ化する

Inactive 状態にあるRTコンポーネントをActive に遷移させ、アクティ ブ化する。この操作が呼ばれた結果、on_activate が呼び出される。指 定したRTコンポーネントが参加者リストに含まれない場合は、 BAD_PARAMETER が返される。指定したRTコンポーネントの状態が Inactive 以外の場合は、PRECONDITION_NOT_MET が返される。

引数
compアクティブ化対象RTコンポーネント
戻り値
ReturnCode_t 型のリターンコード

◆ add_component()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::add_component ( RTC::LightweightRTObject_ptr comp)
override

RTコンポーネントを追加する

指定したRTコンポーネントを参加者リストに追加する。追加されたRTコ ンポーネントは attach_context が呼ばれ、Inactive 状態に遷移する。 指定されたRTコンポーネントがnullの場合は、BAD_PARAMETER が返され る。指定されたRTコンポーネントが DataFlowComponent 以外の場合は、 BAD_PARAMETER が返される。

引数
comp追加対象RTコンポーネント
戻り値
ReturnCode_t 型のリターンコード

◆ close()

int RTC_exp::PeriodicExecutionContext::close ( unsigned long flags)
override

ExecutionContext 用のスレッド実行関数

ExecutionContext 用のスレッド終了時に呼ばれる。コンポーネントオ ブジェクトの非アクティブ化、マネージャへの通知を行う。これは coil::Task サービスクラスメソッドのオーバーライド。

引数
flags終了処理フラグ
戻り値
終了処理結果

◆ deactivate_component()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::deactivate_component ( RTC::LightweightRTObject_ptr comp)
override

RTコンポーネントを非アクティブ化する

Inactive 状態にあるRTコンポーネントを非アクティブ化し、Inactive に遷移させる。この操作が呼ばれた結果、on_deactivate が呼び出され る。指定したRTコンポーネントが参加者リストに含まれない場合は、 BAD_PARAMETER が返される。指定したRTコンポーネントの状態が Active 以外の場合は、PRECONDITION_NOT_MET が返される。

引数
comp非アクティブ化対象RTコンポーネント
戻り値
ReturnCode_t 型のリターンコード

◆ get_component_state()

RTC::LifeCycleState RTC_exp::PeriodicExecutionContext::get_component_state ( RTC::LightweightRTObject_ptr comp)
override

RTコンポーネントの状態を取得する

指定したRTコンポーネントの状態(LifeCycleState)を取得する。指定し たRTコンポーネントが参加者リストに含まれない場合は、 UNKNOWN_STATE が返される。

引数
comp状態取得対象RTコンポーネント
戻り値
現在の状態(LifeCycleState)

◆ get_kind()

RTC::ExecutionKind RTC_exp::PeriodicExecutionContext::get_kind ( )
override

ExecutionKind を取得する

本 ExecutionContext の ExecutionKind を取得する

戻り値
ExecutionKind

◆ get_profile()

RTC::ExecutionContextProfile * RTC_exp::PeriodicExecutionContext::get_profile ( )
override

ExecutionContextProfile を取得する

本 ExecutionContext のプロファイルを取得する。

戻り値
ExecutionContextProfile

◆ get_rate()

CORBA::Double RTC_exp::PeriodicExecutionContext::get_rate ( )
override

ExecutionContext の実行周期(Hz)を取得する

Active 状態にてRTコンポーネントが実行される周期(単位:Hz)を取得す る。

戻り値
処理周期(単位:Hz)

◆ getProperty()

template<class T >
void RTC_exp::PeriodicExecutionContext::getProperty ( coil::Properties & prop,
const char * key,
T & value )
inlineprotected

◆ init()

void RTC_exp::PeriodicExecutionContext::init ( coil::Properties & props)
overridevirtual

ExecutionContextの初期化を行う

ExecutionContextの初期化処理

RTC::ExecutionContextBaseを再実装しています。

RTC_exp::VxWorksRTExecutionContextで再実装されています。

◆ is_running()

CORBA::Boolean RTC_exp::PeriodicExecutionContext::is_running ( )
override

ExecutionContext 実行状態確認関数

この操作は ExecutionContext が Runnning 状態の場合に true を返す。 Executioncontext が Running の間、当該 Executioncontext に参加し ている全てのアクティブRTコンポーネントが、ExecutionContext の実 行種類に応じて実行される。

戻り値
状態確認関数(動作中:true、停止中:false)

◆ onActivated()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onActivated ( RTC_impl::RTObjectStateMachine * comp,
long int count )
overrideprotectedvirtual

onActivated() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onAddedComponent()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onAddedComponent ( RTC::LightweightRTObject_ptr rtobj)
overrideprotectedvirtual

onAddedComponent() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onDeactivated()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onDeactivated ( RTC_impl::RTObjectStateMachine * comp,
long int count )
overrideprotectedvirtual

onDeactivated() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onRemovedComponent()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onRemovedComponent ( RTC::LightweightRTObject_ptr rtobj)
overrideprotectedvirtual

onRemovedComponent() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onReset()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onReset ( RTC_impl::RTObjectStateMachine * comp,
long int count )
overrideprotectedvirtual

onReset() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onStarted()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onStarted ( )
overrideprotectedvirtual

onStarted() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onStopping()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onStopping ( )
overrideprotectedvirtual

onStopping() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onWaitingActivated()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onWaitingActivated ( RTC_impl::RTObjectStateMachine * comp,
long int count )
overrideprotectedvirtual

onWaitingActivated() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onWaitingDeactivated()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onWaitingDeactivated ( RTC_impl::RTObjectStateMachine * comp,
long int count )
overrideprotectedvirtual

onWaitingDeactivated() template function

RTC::ExecutionContextBaseを再実装しています。

◆ onWaitingReset()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::onWaitingReset ( RTC_impl::RTObjectStateMachine * comp,
long int count )
overrideprotectedvirtual

onWaitingReset() template function

RTC::ExecutionContextBaseを再実装しています。

◆ open()

int RTC_exp::PeriodicExecutionContext::open ( void * args)
override

ExecutionContext用アクティビティスレッドを生成する

Executioncontext 用の内部アクティビティスレッドを生成し起動する。 これは coil::Task サービスクラスメソッドのオーバーライド。

引数
args通常は0
戻り値
生成処理実行結果

◆ remove_component()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::remove_component ( RTC::LightweightRTObject_ptr comp)
override

RTコンポーネントを参加者リストから削除する

指定したRTコンポーネントを参加者リストから削除する。削除された RTコンポーネントは detach_context が呼ばれる。指定されたRTコンポー ネントが参加者リストに登録されていない場合は、BAD_PARAMETER が返 される。

引数
comp削除対象RTコンポーネント
戻り値
ReturnCode_t 型のリターンコード

◆ reset_component()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::reset_component ( RTC::LightweightRTObject_ptr comp)
override

RTコンポーネントをリセットする

Error 状態のRTコンポーネントの復帰を試みる。この操作が呼ばれた結 果、on_reset が呼び出される。指定したRTコンポーネントが参加者リ ストに含まれない場合は、BAD_PARAMETER が返される。指定したRTコン ポーネントの状態が Error 以外の場合は、PRECONDITION_NOT_MET が返 される。

引数
compリセット対象RTコンポーネント
戻り値
ReturnCode_t 型のリターンコード

◆ set_rate()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::set_rate ( CORBA::Double rate)
override

ExecutionContext の実行周期(Hz)を設定する

Active 状態にてRTコンポーネントが実行される周期(単位:Hz)を設定す る。実行周期の変更は、DataFlowComponentAction の on_rate_changed によって各RTコンポーネントに伝達される。

引数
rate処理周期(単位:Hz)
戻り値
ReturnCode_t 型のリターンコード

◆ setCpuAffinity()

virtual void RTC_exp::PeriodicExecutionContext::setCpuAffinity ( coil::Properties & props)
protectedvirtual

setting CPU affinity from given properties

◆ start()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::start ( )
override

ExecutionContext の実行を開始

ExecutionContext の実行状態を Runnning とするためのリクエストを 発行する。ExecutionContext の状態が遷移すると ComponentAction::on_startup が呼び出される。参加しているRTコンポー ネントが、初期化されるまで ExecutionContext を開始することはでき ない。ExecutionContext は複数回開始/停止を繰り返すことができる。

戻り値
ReturnCode_t 型のリターンコード

◆ stop()

RTC::ReturnCode_t RTC_exp::PeriodicExecutionContext::stop ( )
overridevirtual

ExecutionContext の実行を停止

ExecutionContext の状態を Stopped とするためのリクエストを発行す る。遷移が発生した場合は、ComponentAction::on_shutdown が呼び出 される。参加しているRTコンポーネントが終了する前に ExecutionContext を停止する必要がある。ExecutionContext は複数回 開始/停止を繰り返すことができる。

戻り値
ReturnCode_t 型のリターンコード

RTC::ExecutionContextBaseを再実装しています。

◆ svc()

int RTC_exp::PeriodicExecutionContext::svc ( )
override

ExecutionContext 用のスレッド実行関数

ExecutionContext 用のスレッド実行関数。登録されたコンポーネント の処理を呼び出す。

戻り値
実行結果

◆ threadRunning()

bool RTC_exp::PeriodicExecutionContext::threadRunning ( )
inlineprotected

参照先 m_svc, m_svcmutex.

メンバ詳解

◆ m_cpu

coil::CpuMask RTC_exp::PeriodicExecutionContext::m_cpu
protected

CPU affinity mask list

◆ m_nowait

bool RTC_exp::PeriodicExecutionContext::m_nowait {false}
protected

ExecutionContext 即時実行(wait無し実行)フラグ

◆ m_svc

bool RTC_exp::PeriodicExecutionContext::m_svc {false}
protected

ExecutionContext のスレッド実行フラグ

参照元 threadRunning().

◆ m_svcmutex

std::mutex RTC_exp::PeriodicExecutionContext::m_svcmutex
protected

参照元 threadRunning().

◆ m_workerthread

WorkerThreadCtrl RTC_exp::PeriodicExecutionContext::m_workerthread
protected

svn用の状態変数

◆ rtclog

RTC::Logger RTC_exp::PeriodicExecutionContext::rtclog {"periodic_ec"}
protected

ロガーストリーム


このクラス詳解は次のファイルから抽出されました: