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

Manager クラス [詳解]

#include <Manager.h>

RTC::Manager 連携図

クラス

struct  ECFactoryPredicate
 
class  FactoryPredicate
 
struct  Finalized
 
struct  InstanceName
 
struct  ModuleFactories
 
class  ModulePredicate
 

公開型

using TaskId = coil::Timer<coil::PeriodicFunction>::TaskId
 

公開メンバ関数

void join ()
 マネージャ終了処理の待ち合わせ
 
LogStreamBufgetLogStreamBuf ()
 ログバッファの取得
 
std::string & getLogLevel ()
 コンフィグレーションのログレベルの取得
 
coil::Properties & getConfig ()
 マネージャコンフィギュレーションの取得
 
void setModuleInitProc (ModuleInitProc proc)
 初期化プロシージャのセット
 
bool activateManager ()
 Managerのアクティブ化
 
void runManager (bool no_block=false)
 Managerの実行
 
TaskId addTask (std::function< void(void)> fn, std::chrono::nanoseconds period)
 周期実行タスクの登録
 
void invoke (std::function< void(void)> fn, std::chrono::nanoseconds delay=std::chrono::seconds::zero())
 Manger のメインスレッドで処理を実行
 
ReturnCode_t load (const std::string &fname, const std::string &initfunc)
 [CORBA interface] モジュールのロード
 
void unload (const char *fname)
 モジュールのアンロード
 
void unloadAll ()
 全モジュールのアンロード
 
std::vector< coil::Properties > getLoadedModules ()
 ロード済みのモジュールリストを取得する
 
std::vector< coil::Properties > getLoadableModules ()
 ロード可能なモジュールリストを取得する
 
bool registerFactory (coil::Properties &profile, RtcNewFunc new_func, RtcDeleteFunc delete_func)
 RTコンポーネント用ファクトリを登録する
 
std::vector< coil::Properties > getFactoryProfiles ()
 ファクトリのプロファイルを取得
 
bool registerECFactory (const char *name, ECNewFunc new_func, ECDeleteFunc delete_func)
 ExecutionContext用ファクトリを登録する
 
std::vector< std::string > getModulesFactories ()
 ファクトリ全リストを取得する
 
RTObject_implcreateComponent (const char *comp_args)
 RTコンポーネントを生成する
 
ExecutionContextBasecreateContext (const char *ec_args)
 Contextを生成する
 
void cleanupComponent (RTObject_impl *comp)
 RTコンポーネントの登録解除
 
void cleanupComponents ()
 RTコンポーネントの削除する
 
void notifyFinalized (RTObject_impl *comp)
 RTコンポーネントの削除する
 
bool registerComponent (RTObject_impl *comp)
 RTコンポーネントを直接 Manager に登録する
 
bool unregisterComponent (RTObject_impl *comp)
 RTコンポーネントの登録を解除する
 
void deleteComponent (RTObject_impl *comp)
 Manager に登録されているRTコンポーネントを削除する
 
void deleteComponent (const char *instance_name)
 Manager に登録されているRTコンポーネントを削除する
 
RTObject_implgetComponent (const char *instance_name)
 Manager に登録されているRTコンポーネントを検索する
 
std::vector< RTObject_impl * > getComponents ()
 Manager に登録されている全RTコンポーネントを取得する
 
void addManagerActionListener (RTM::ManagerActionListener *listener, bool autoclean=true)
 
void removeManagerActionListener (RTM::ManagerActionListener *listener)
 
void addModuleActionListener (RTM::ModuleActionListener *listener, bool autoclean=true)
 
void removeModuleActionListener (RTM::ModuleActionListener *listener)
 
void addRtcLifecycleActionListener (RTM::RtcLifecycleActionListener *listener, bool autoclean=true)
 
void removeRtcLifecycleActionListener (RTM::RtcLifecycleActionListener *listener)
 
void addNamingActionListener (RTM::NamingActionListener *listener, bool autoclean=true)
 
void removeNamingActionListener (RTM::NamingActionListener *listener)
 
void addLocalServiceActionListener (RTM::LocalServiceActionListener *listener, bool autoclean=true)
 
void removeLocalServiceActionListener (RTM::LocalServiceActionListener *listener)
 
CORBA::ORB_ptr theORB ()
 ORB のポインタを取得する (所有権保持)
 
CORBA::ORB_ptr getORB ()
 ORB のポインタを取得する (所有権複製)
 
PortableServer::POA_ptr thePOA ()
 Manager が持つ RootPOA のポインタを取得する (所有権保持)
 
PortableServer::POA_ptr getPOA ()
 Manager が持つ RootPOA のポインタを取得する (所有権複製)
 
PortableServer::POAManager_ptr thePOAManager ()
 Manager が持つ POAManager を取得する (所有権保持)
 
PortableServer::POAManager_ptr getPOAManager ()
 Manager が持つ POAManager を取得する (所有権複製)
 
RTM::ManagerServantgetManagerServant ()
 ManagerServantを取得する
 
bool initLocalService ()
 LocalService の初期化
 
NamingManagergetNaming ()
 NamingManagerを取得する
 

静的公開メンバ関数

static Managerinit (int argc, char **argv)
 マネージャの初期化
 
static Managerinstance ()
 マネージャのインスタンスの取得
 
static void terminate ()
 マネージャ終了処理
 
static void removeTask (TaskId id)
 周期実行タスクの削除
 

限定公開型

using ComponentManager
 
using FactoryManager
 コンポーネントファクトリ
 
using ECFactoryManager
 

限定公開メンバ関数

 Manager ()
 Protected コンストラクタ
 
 Manager (const Manager &)=delete
 
Manageroperator= (const Manager &)=delete
 
void initManager (int argc, char **argv)
 Manager の内部初期化処理
 
void shutdown ()
 マネージャ・シャットダウン
 
void mainThread ()
 Manager メインスレッドのメイン関数
 
void initLogstreamFile ()
 
void initLogstreamPlugins ()
 
void initLogstreamOthers ()
 
bool initLogger ()
 System logger の初期化
 
void shutdownLogger ()
 System Logger の終了処理
 
void shutdownManagerServant ()
 Managerサーバント の終了処理
 
bool initORB ()
 CORBA ORB の初期化処理
 
std::string createORBOptions ()
 ORB のコマンドラインオプション作成
 
void createORBEndpoints (coil::vstring &endpoints)
 エンドポイントの生成
 
void createORBEndpointOption (std::string &opt, coil::vstring endpoints)
 ORB の Endpoint のコマンドラインオプション作成
 
void shutdownORB ()
 ORB の終了処理
 
bool initNaming ()
 NamingManager の初期化
 
void shutdownNaming ()
 NamingManager の終了処理
 
NamingManagergetNamingManager ()
 NamingManagerを取得する
 
void shutdownComponents ()
 NamingManager に登録されている RTコンポーネントの終了処理
 
bool procComponentArgs (const char *comp_arg, coil::Properties &comp_id, coil::Properties &comp_conf)
 引数文字列からコンポーネント型名・プロパティを抽出する
 
bool procContextArgs (const char *ec_args, std::string &ec_id, coil::Properties &ec_conf)
 引数文字列からExecutionContext名・プロパティを抽出する
 
void configureComponent (RTObject_impl *comp, const coil::Properties &prop)
 RTコンポーネントのコンフィギュレーション処理
 
bool initExecContext ()
 ExecutionContextManager の初期化
 
bool initComposite ()
 PeriodicECSharedComposite の初期化
 
bool initFactories ()
 ファクトリの初期化
 
void initCpuAffinity ()
 
void initPreConnection ()
 起動時にrtc.confで指定したポートを接続する
 
void initPreActivation ()
 起動時にrtc.confで指定したRTCをアクティベーションする
 
void initPreCreation ()
 起動時にrtc.confで指定したRTCを生成する
 
void invokeInitProc ()
 
void publishPorts (RTObject_impl *comp)
 
void subscribePorts (RTObject_impl *comp)
 
PortServiceList * getPortsOnNameServers (const std::string &nsname, const std::string &kind)
 
void connectDataPorts (PortService_ptr port, PortServiceList_var &target_ports)
 
void connectServicePorts (PortService_ptr port, PortServiceList_var &target_ports)
 
bool initManagerServant ()
 ManagerServant の初期化
 
bool mergeProperty (coil::Properties &prop, const char *file_name)
 プロパティ情報のマージ
 
std::string formatString (const char *naming_format, coil::Properties &prop)
 NamingServer に登録する際の登録情報を組み立てる
 
void setEndpointProperty (CORBA::Object_ptr objref)
 corba.endpoints にエンドポイント情報を設定する
 
void endpointPropertySwitch (const std::string &ipver, bool &ip, std::vector< int > &ip_list)
 corba.endpoint_property からオプション情報を取得する
 

限定公開変数類

RTM::ManagerServantm_mgrservant {nullptr}
 ManagerServant へのポインタ
 
CORBA::ORB_var m_pORB
 ORB へのポインタ
 
PortableServer::POA_var m_pPOA
 POA へのポインタ
 
PortableServer::POAManager_var m_pPOAManager
 POAManager へのポインタ
 
coil::Argv m_argv
 ORB_init に指定する引数
 
int m_argvSize
 ORB_init に指定する引数
 
ModuleInitProc m_initProc {nullptr}
 ユーザ初期化関数へのポインタ
 
coil::Properties m_config
 Manager の configuration を格納する Properties
 
ModuleManagerm_module {nullptr}
 ModuleManager へのポインタ
 
NamingManagerm_namingManager {nullptr}
 NamingManager へのポインタ
 
coil::Timer< coil::DelayedFunction > m_invoker
 Manager スレッド上での遅延呼び出し用タイマー
 
coil::Timer< coil::PeriodicFunction > m_scheduler
 Manager スレッド上での周期呼び出し用タイマー
 
std::thread m_threadOrb
 ORB 用のスレッド
 
std::thread m_threadMain
 Manager のメインスレッド
 
std::list< coil::SignalAction > m_signals
 シグナル管理用配列
 
bool m_needsTimer {false}
 マネージャーがタイマーを利用するかどうかのフラグ
 
LogStreamBuf m_logStreamBuf
 ロガーバッファ
 
Logger rtclog {&m_logStreamBuf}
 ロガーストリーム
 
std::vector< std::filebuf * > m_logfiles
 ログ出力ファイル
 
ComponentManager m_compManager
 コンポーネントマネージャ
 
FactoryManager m_factory
 ComponentManager
 
ECFactoryManager m_ecfactory
 ExecutionContext マネージャ
 
std::vector< ExecutionContextBase * > m_ecs
 ExecutionContext リスト
 
Finalized m_finalized
 
::RTM::ManagerActionListeners m_listeners
 

静的限定公開変数類

static Managermanager
 唯一の Manager へのポインタ
 
static std::mutex mutex
 唯一の Manager へのポインタに対する mutex
 
static std::atomic_flag m_isRunning
 メインスレッド停止用フラグ
 

詳解

Manager クラス

コンポーネントなど各種の情報管理を行うマネージャクラス。

から
0.2.0

型定義メンバ詳解

◆ ComponentManager

初期値:
ObjectManager<std::string, RTObject_impl,
InstanceName>
オブジェクト管理用クラス
Definition ObjectManager.h:52

◆ ECFactoryManager

初期値:
ObjectManager<const char*, ECFactoryBase,
ECFactoryPredicate>

◆ FactoryManager

初期値:
ObjectManager<const coil::Properties,
FactoryBase, FactoryPredicate>

コンポーネントファクトリ

◆ TaskId

using RTC::Manager::TaskId = coil::Timer<coil::PeriodicFunction>::TaskId

構築子と解体子

◆ Manager() [1/2]

RTC::Manager::Manager ( )
protected

Protected コンストラクタ

Protected コンストラクタ

◆ Manager() [2/2]

RTC::Manager::Manager ( const Manager & )
protecteddelete

関数詳解

◆ activateManager()

bool RTC::Manager::activateManager ( )

Managerのアクティブ化

このオペレーションは以下の処理を行う

  • CORBA POAManager のアクティブ化
  • マネージャCORBAオブジェクトのアクティブ化
  • Manager のオブジェクト参照の登録

このオペレーションは、マネージャの初期化後、runManager() の前に呼ぶ必要がある。

戻り値
処理結果(アクティブ化成功:true、失敗:false)

◆ addLocalServiceActionListener()

void RTC::Manager::addLocalServiceActionListener ( RTM::LocalServiceActionListener * listener,
bool autoclean = true )

◆ addManagerActionListener()

void RTC::Manager::addManagerActionListener ( RTM::ManagerActionListener * listener,
bool autoclean = true )

◆ addModuleActionListener()

void RTC::Manager::addModuleActionListener ( RTM::ModuleActionListener * listener,
bool autoclean = true )

◆ addNamingActionListener()

void RTC::Manager::addNamingActionListener ( RTM::NamingActionListener * listener,
bool autoclean = true )

◆ addRtcLifecycleActionListener()

void RTC::Manager::addRtcLifecycleActionListener ( RTM::RtcLifecycleActionListener * listener,
bool autoclean = true )

◆ addTask()

TaskId RTC::Manager::addTask ( std::function< void(void)> fn,
std::chrono::nanoseconds period )

周期実行タスクの登録

周期的に実行する関数や関数オブジェクトを Manager のタイマーに登録する。 removePeriodTask() が実行されるまで処理が継続される。本関数に登録する処理 の中で sleep などの長時間ブロッキングは推奨されない。また周期タスクの中で 本関数を呼び出してはならない。

引数
fn周期実行する関数または関数オブジェクト
period周期実行の実行間隔
戻り値
id: removeTask() で実行解除するための ID

◆ cleanupComponent()

void RTC::Manager::cleanupComponent ( RTObject_impl * comp)

RTコンポーネントの登録解除

指定したRTコンポーネントのインスタンスをネーミングサービスから 登録解除する。

引数
comp登録解除対象RTコンポーネント

◆ cleanupComponents()

void RTC::Manager::cleanupComponents ( )

RTコンポーネントの削除する

notifyFinalized()によって登録されたRTコンポーネントを削除する。

◆ configureComponent()

void RTC::Manager::configureComponent ( RTObject_impl * comp,
const coil::Properties & prop )
protected

RTコンポーネントのコンフィギュレーション処理

RTコンポーネントの型およびインスタンス毎に記載されたプロパティファイルの 情報を読み込み、コンポーネントに設定する。 また、各コンポーネントの NamingService 登録時の名称を取得し、設定する。

引数
compコンフィギュレーション対象RTコンポーネント

◆ connectDataPorts()

void RTC::Manager::connectDataPorts ( PortService_ptr port,
PortServiceList_var & target_ports )
protected
引数
port
target_ports

◆ connectServicePorts()

void RTC::Manager::connectServicePorts ( PortService_ptr port,
PortServiceList_var & target_ports )
protected
引数
port
target_ports

◆ createComponent()

RTObject_impl * RTC::Manager::createComponent ( const char * comp_args)

RTコンポーネントを生成する

指定したRTコンポーネントのインスタンスを登録されたFactory経由 で生成する。

生成されるコンポーネントの各種プロファイルは以下の優先順位で 設定される。

  1. createComponent() の引数で与えられたプロファイル
  2. rtc.confで指定された外部ファイルで与えられたプロファイル –# category.instance_name.config_file –# category.component_type.config_file
  3. コードに埋め込まれたプロファイル

インスタンス生成が成功した場合、併せて以下の処理を実行する。

  • 外部ファイルで設定したコンフィギュレーション情報の読み込み,設定
  • ExecutionContextのバインド,動作開始
  • ネーミングサービスへの登録
引数
comp_args生成対象RTコンポーネントIDおよびコンフィギュレー ション引数。フォーマットは大きく分けて "id" と "configuration" 部分が存在する。

comp_args: [id]?[configuration] id は必須、configurationはオプション id: RTC:[vendor]:[category]:[implementation_id]:[version] RTC は固定かつ必須 vendor, category, version はオプション implementation_id は必須 オプションを省略する場合でも ":" は省略不可 configuration: [key0]=[value0]&[key1]=[value1]&[key2]=[value2]..... RTCが持つPropertiesの値をすべて上書きすることができる。 key=value の形式で記述し、"&" で区切る

例えば、 RTC:jp.go.aist:example:ConfigSample:1.0?conf.default.str_param0=munya RTC::example:ConfigSample:?conf.default.int_param0=100

戻り値
生成したRTコンポーネントのインスタンス

◆ createContext()

ExecutionContextBase * RTC::Manager::createContext ( const char * ec_args)

Contextを生成する

戻り値
生成したConetextのインスタンス

◆ createORBEndpointOption()

void RTC::Manager::createORBEndpointOption ( std::string & opt,
coil::vstring endpoints )
protected

ORB の Endpoint のコマンドラインオプション作成

引数
optコマンドラインオプション
endpointエンドポイントリスト

◆ createORBEndpoints()

void RTC::Manager::createORBEndpoints ( coil::vstring & endpoints)
protected

エンドポイントの生成

コンフィグレーションからエンドポイントを生成する。

引数
endpointsエンドポイントリスト

◆ createORBOptions()

std::string RTC::Manager::createORBOptions ( )
protected

ORB のコマンドラインオプション作成

コンフィギュレーション情報に設定された内容から ORB の起動時オプションを作成する。

戻り値
ORB 起動時オプション

◆ deleteComponent() [1/2]

void RTC::Manager::deleteComponent ( const char * instance_name)

Manager に登録されているRTコンポーネントを削除する

マネージャに登録されているRTコンポーネントを削除する。 指定されたRTコンポーネントをネーミングサービスから削除し、 RTコンポーネント自体を終了させるとともに、インスタンスを解放する。

引数
instance_name削除対象RTコンポーネントのインスタンス名

◆ deleteComponent() [2/2]

void RTC::Manager::deleteComponent ( RTObject_impl * comp)

Manager に登録されているRTコンポーネントを削除する

マネージャに登録されているRTコンポーネントを削除する。 指定されたRTコンポーネントをネーミングサービスから削除し、 RTコンポーネント自体を終了させるとともに、インスタンスを解放する。

引数
comp削除対象RTコンポーネントのインスタンス

◆ endpointPropertySwitch()

void RTC::Manager::endpointPropertySwitch ( const std::string & ipver,
bool & ip,
std::vector< int > & ip_list )
protected

corba.endpoint_property からオプション情報を取得する

◆ formatString()

std::string RTC::Manager::formatString ( const char * naming_format,
coil::Properties & prop )
protected

NamingServer に登録する際の登録情報を組み立てる

指定された書式とプロパティ情報を基に NameServer に登録する際の情報を 組み立てる。 各書式指定用文字の意味は以下のとおり

  • % : コンテキストの区切り
  • n : インスタンス名称
  • t : 型名
  • m : 型名
  • v : バージョン
  • V : ベンダー
  • c : カテゴリ
  • h : ホスト名
  • M : マネージャ名
  • p : プロセスID
引数
naming_formatNamingService 登録情報書式指定
prop使用するプロパティ情報
戻り値
指定書式変換結果

◆ getComponent()

RTObject_impl * RTC::Manager::getComponent ( const char * instance_name)

Manager に登録されているRTコンポーネントを検索する

Manager に登録されているRTコンポーネントを指定した名称で検索し、 合致するコンポーネントを取得する。

引数
instance_name検索対象RTコンポーネントの名称
戻り値
名称が一致するRTコンポーネントのインスタンス

◆ getComponents()

std::vector< RTObject_impl * > RTC::Manager::getComponents ( )

Manager に登録されている全RTコンポーネントを取得する

Manager に登録されているRTコンポーネントの全インスタンスを取得する。

戻り値
全RTコンポーネントのインスタンスリスト

◆ getConfig()

coil::Properties & RTC::Manager::getConfig ( )
inline

マネージャコンフィギュレーションの取得

マネージャに設定したコンフィギュレーションを取得する。

戻り値
マネージャのコンフィギュレーション

参照先 m_config.

◆ getFactoryProfiles()

std::vector< coil::Properties > RTC::Manager::getFactoryProfiles ( )

ファクトリのプロファイルを取得

ファクトリのプロファイルを取得する。

戻り値
ファクトリのプロファイル

◆ getLoadableModules()

std::vector< coil::Properties > RTC::Manager::getLoadableModules ( )

ロード可能なモジュールリストを取得する

ロード可能モジュールのリストを取得する。 (現在はModuleManager側で未実装)

戻り値
ロード可能モジュール リスト

◆ getLoadedModules()

std::vector< coil::Properties > RTC::Manager::getLoadedModules ( )

ロード済みのモジュールリストを取得する

現在マネージャにロードされているモジュールのリストを取得する。

戻り値
ロード済みモジュールリスト

◆ getLogLevel()

std::string & RTC::Manager::getLogLevel ( )
inline

コンフィグレーションのログレベルの取得

コンフィグレーションのログレベルを取得する。

戻り値
コンフィギュレーションのログレベル

参照先 m_config.

◆ getLogStreamBuf()

LogStreamBuf & RTC::Manager::getLogStreamBuf ( )
inline

ログバッファの取得

マネージャに設定したログバッファを取得する。

戻り値
マネージャに設定したログバッファ

参照先 m_logStreamBuf.

◆ getManagerServant()

RTM::ManagerServant & RTC::Manager::getManagerServant ( )

ManagerServantを取得する

◆ getModulesFactories()

std::vector< std::string > RTC::Manager::getModulesFactories ( )

ファクトリ全リストを取得する

登録されているファクトリの全リストを取得する。

戻り値
登録ファクトリ リスト

◆ getNaming()

NamingManager * RTC::Manager::getNaming ( )

NamingManagerを取得する

戻り値
NamingManager

◆ getNamingManager()

NamingManager & RTC::Manager::getNamingManager ( )
protected

NamingManagerを取得する

◆ getORB()

CORBA::ORB_ptr RTC::Manager::getORB ( )

ORB のポインタを取得する (所有権複製)

Manager に設定された ORB のポインタを取得する。所有権はコピーさ れ(リファレンスカウントが1増加する。)、受け取った側でも所有権 を獲得する。したがって、使用後にはリファレンスを解放する必要があ る。通常は以下のように戻り値を _var 型変数で受け取り、自動的に解 放させる方法が推奨される。

{ CORBA::ORB_var orb = Manager::instance().getORB(); orb->string_to_object(<IOR string>); } // ORB's reference in orb is released here.

戻り値
ORB オブジェクト

参照元 CORBA_SeqUtil::refToVstring().

◆ getPOA()

PortableServer::POA_ptr RTC::Manager::getPOA ( )

Manager が持つ RootPOA のポインタを取得する (所有権複製)

Manager に設定された RootPOA へのポインタを取得する。所有権はコ ピーされ(リファレンスカウントが1増加する。)、受け取った側でも 所有権を獲得する。したがって、使用後にはリファレンスを解放する必 要がある。通常は以下のように戻り値を _var 型変数で受け取り、自動 的に解放させる方法が推奨される。

{ PortableServer::POA_var poa = Manager::instance().getPOA();; poa->servant_to_id(m_servant); } // POA's reference in orb is released here.

戻り値
RootPOAオブジェクト

◆ getPOAManager()

PortableServer::POAManager_ptr RTC::Manager::getPOAManager ( )

Manager が持つ POAManager を取得する (所有権複製)

Manager に設定された POAMAnager を取得する。所有権はコピーさ れ(リファレンスカウントが1増加する。)、受け取った側でも所有権 を獲得する。したがって、使用後にはリファレンスを解放する必要があ る。通常は以下のように戻り値を _var 型変数で受け取り、自動的に解 放させる方法が推奨される。

{ PortableServer::POAManager_var poam; poam = = Manager::instance().getPOAManager(); poam->activate(); } // POAManager's reference in orb is released here.

戻り値
POAマネージャ

◆ getPortsOnNameServers()

PortServiceList * RTC::Manager::getPortsOnNameServers ( const std::string & nsname,
const std::string & kind )
protected
引数
comp

◆ init()

static Manager * RTC::Manager::init ( int argc,
char ** argv )
static

マネージャの初期化

マネージャを初期化する static メンバ関数。 マネージャをコマンドライン引数を与えて初期化する。 マネージャを使用する場合は、必ずこの初期化メンバ関数 init() を 呼ばなければならない。 マネージャのインスタンスを取得する方法として、init(), instance() の 2つの static メンバ関数が用意されているが、初期化はinit()でしか 行われないため、Manager の生存期間の一番最初にはinit()を呼ぶ必要がある。

※マネージャの初期化処理

  • initManager: 引数処理、configファイルの読み込み、サブシステム初期化
  • initLogger: Logger初期化
  • initORB: ORB 初期化
  • initNaming: NamingService 初期化
  • initExecutionContext: ExecutionContext factory 初期化
  • initTimer: Timer 初期化
引数
argcコマンドライン引数の数
argvコマンドライン引数
戻り値
Manager の唯一のインスタンスの参照

◆ initComposite()

bool RTC::Manager::initComposite ( )
protected

PeriodicECSharedComposite の初期化

戻り値
PeriodicECSharedComposite 初期化処理実行結果 (初期化成功:true、初期化失敗:false)

◆ initCpuAffinity()

void RTC::Manager::initCpuAffinity ( )
protected

◆ initExecContext()

bool RTC::Manager::initExecContext ( )
protected

ExecutionContextManager の初期化

使用する各 ExecutionContext の初期化処理を実行し、各 ExecutionContext 生成用 Factory を ExecutionContextManager に登録する。

戻り値
ExecutionContextManager 初期化処理実行結果 (初期化成功:true、初期化失敗:false)

◆ initFactories()

bool RTC::Manager::initFactories ( )
protected

ファクトリの初期化

バッファ、スレッド、パブリッシャ、プロバイダ、コンシューマの ファクトリを初期化する。

戻り値
ファクトリ初期化処理実行結果 (初期化成功:true、初期化失敗:false)

◆ initLocalService()

bool RTC::Manager::initLocalService ( )

LocalService の初期化

戻り値
Timer 初期化処理実行結果(初期化成功:true、初期化失敗:false)

◆ initLogger()

bool RTC::Manager::initLogger ( )
protected

System logger の初期化

System logger の初期化を実行する。 コンフィギュレーションファイルに設定された情報に基づき、 ロガーの初期化,設定を実行する。

戻り値
初期化実行結果(初期化成功:true、初期化失敗:false)

◆ initLogstreamFile()

void RTC::Manager::initLogstreamFile ( )
protected

◆ initLogstreamOthers()

void RTC::Manager::initLogstreamOthers ( )
protected

◆ initLogstreamPlugins()

void RTC::Manager::initLogstreamPlugins ( )
protected

◆ initManager()

void RTC::Manager::initManager ( int argc,
char ** argv )
protected

Manager の内部初期化処理

Manager の内部初期化処理を実行する。

  • Manager コンフィギュレーションの設定
  • ログ出力ファイルの設定
  • 終了処理用スレッドの生成
  • タイマ用スレッドの生成(タイマ使用時)
引数
argcコマンドライン引数の数
argvコマンドライン引数

◆ initManagerServant()

bool RTC::Manager::initManagerServant ( )
protected

ManagerServant の初期化

戻り値
Timer 初期化処理実行結果(初期化成功:true、初期化失敗:false)

◆ initNaming()

bool RTC::Manager::initNaming ( )
protected

NamingManager の初期化

NamingManager の初期化処理を実行する。 ただし、NamingManager を使用しないようにプロパティ情報に設定されている 場合には何もしない。 NamingManager を使用する場合、プロパティ情報に設定されている デフォルト NamingServer を登録する。 また、定期的に情報を更新するように設定されている場合には、指定された周期 で自動更新を行うためのタイマを起動するとともに、更新用メソッドをタイマに 登録する。

戻り値
初期化処理結果(初期化成功:true、初期化失敗:false)

◆ initORB()

bool RTC::Manager::initORB ( )
protected

CORBA ORB の初期化処理

引数により与えられた設定を元にORBを初期化する。

戻り値
ORB 初期化処理結果(初期化成功:true、初期化失敗:false)

◆ initPreActivation()

void RTC::Manager::initPreActivation ( )
protected

起動時にrtc.confで指定したRTCをアクティベーションする

例: manager.components.preactivation: RTC1,RTC2~

◆ initPreConnection()

void RTC::Manager::initPreConnection ( )
protected

起動時にrtc.confで指定したポートを接続する

例: manager.components.preconnect: RTC0.port0?port=RTC0.port1&interface_type=corba_cdr&dataflow_type=pull&~,~

◆ initPreCreation()

void RTC::Manager::initPreCreation ( )
protected

起動時にrtc.confで指定したRTCを生成する

例: manager.components.precreate RTC1,RTC2~

◆ instance()

static Manager & RTC::Manager::instance ( )
static

マネージャのインスタンスの取得

マネージャのインスタンスを取得する static メンバ関数。 この関数を呼ぶ前に、必ずこの初期化メンバ関数 init() が呼ばれている 必要がある。

戻り値
Manager の唯一のインスタンスの参照

参照元 CORBA_SeqUtil::refToVstring().

◆ invoke()

void RTC::Manager::invoke ( std::function< void(void)> fn,
std::chrono::nanoseconds delay = std::chrono::seconds::zero() )

Manger のメインスレッドで処理を実行

Manger のメインスレッドで指定された処理を実行する。長時間のブロッ キングを行う関数の登録は推奨しない。

引数
fn関数または関数オブジェクト
delay起動するまでの遅延時間

◆ invokeInitProc()

void RTC::Manager::invokeInitProc ( )
protected

◆ join()

void RTC::Manager::join ( )

マネージャ終了処理の待ち合わせ

同期を取るため、マネージャ終了処理の待ち合わせを行う。

◆ load()

ReturnCode_t RTC::Manager::load ( const std::string & fname,
const std::string & initfunc )

[CORBA interface] モジュールのロード

指定したコンポーネントのモジュールをロードするとともに、 指定した初期化関数を実行する。

引数
fnameモジュールファイル名
initfunc初期化関数名
戻り値
終了コード RTC::RTC_OK 正常終了 RTC::RTC_ERROR ロード失敗・不明なエラー RTC::PRECONDITION_NOT_MET 設定にり許可されない操作 RTC::BAD_PARAMETER 不正なパラメータ

◆ mainThread()

void RTC::Manager::mainThread ( )
protected

Manager メインスレッドのメイン関数

◆ mergeProperty()

bool RTC::Manager::mergeProperty ( coil::Properties & prop,
const char * file_name )
protected

プロパティ情報のマージ

指定されたファイル内に設定されているプロパティ情報をロードし、 既存の設定済みプロパティとマージする。

引数
propマージ対象プロパティ
file_nameプロパティ情報が記述されているファイル名
戻り値
マージ処理実行結果(マージ成功:true、マージ失敗:false)

◆ notifyFinalized()

void RTC::Manager::notifyFinalized ( RTObject_impl * comp)

RTコンポーネントの削除する

削除するRTコンポーネントを登録する。 登録されたRTコンポーネントは cleanupComponents() で削除される。

引数
削除するRTコンポーネント

◆ operator=()

Manager & RTC::Manager::operator= ( const Manager & )
protecteddelete

◆ procComponentArgs()

bool RTC::Manager::procComponentArgs ( const char * comp_arg,
coil::Properties & comp_id,
coil::Properties & comp_conf )
protected

引数文字列からコンポーネント型名・プロパティを抽出する

文字列からコンポーネント型とコンポーネントのプロパティを抽出する。 与えられる文字列のフォーマットは RTC の ID とコンフィギュレーショ ンからなる

[RTC type]?[key(0)]=[val(0)]&[key(1)]=[val(1)]&...&[key(n)]=[val(n)]

である。なお、RTC type は implementation_id のみ、もしくは、下記 の RTC ID 形式

RTC:[vendor]:[category]:[impl_id]:[version]

を受け付ける。戻り値である、comp_id は、 "vendor", "category", "implementation_id", "version" のキーを持つ Properties 型のオブジェクトとして返される。 comp_conf には "?" 以下に記述されるコンポーネントに与えるプロパティ が Properties 型のオブジェクトとして返される。

戻り値
comp_arg にコンポーネント型が含まれていない場合false
引数
comp_arg処理すべき文字列
comp_id抽出されたコンポーネントの型名
comp_conf抽出されたコンポーネントのプロパティ

◆ procContextArgs()

bool RTC::Manager::procContextArgs ( const char * ec_args,
std::string & ec_id,
coil::Properties & ec_conf )
protected

引数文字列からExecutionContext名・プロパティを抽出する

文字列からExecutionContext名とプロパティを抽出する。 与えられる文字列のフォーマットは RTC の ID とコンフィギュレーショ ンからなる

[ExecutionContext名]?[key(0)]=[val(0)]&[key(1)]=[val(1)]&...&[key(n)]=[val(n)]

である。

ec_conf には "?" 以下に記述されるコンポーネントに与えるプロパティ が Properties 型のオブジェクトとして返される。

戻り値
ec_args にExecutionContext名が含まれていない場合false
引数
ec_args処理すべき文字列
ec_id抽出されたExecutionContext名
ec_conf抽出されたExecutionContextのプロパティ

◆ publishPorts()

void RTC::Manager::publishPorts ( RTObject_impl * comp)
protected
引数
comp

◆ registerComponent()

bool RTC::Manager::registerComponent ( RTObject_impl * comp)

RTコンポーネントを直接 Manager に登録する

指定したRTコンポーネントのインスタンスを ファクトリ経由ではなく直接マネージャに登録する。

引数
comp登録対象RTコンポーネントのインスタンス
戻り値
登録処理結果(登録成功:true、失敗:false)

◆ registerECFactory()

bool RTC::Manager::registerECFactory ( const char * name,
ECNewFunc new_func,
ECDeleteFunc delete_func )

ExecutionContext用ファクトリを登録する

ExecutionContextのインスタンスを生成するための Factoryを登録する。

引数
name生成対象ExecutionContext名称
new_funcExecutionContext生成用関数
delete_funcExecutionContext破棄用関数
戻り値
登録処理結果(登録成功:true、失敗:false)

◆ registerFactory()

bool RTC::Manager::registerFactory ( coil::Properties & profile,
RtcNewFunc new_func,
RtcDeleteFunc delete_func )

RTコンポーネント用ファクトリを登録する

RTコンポーネントのインスタンスを生成するための Factoryを登録する。

引数
profileRTコンポーネント プロファイル
new_funcRTコンポーネント生成用関数
delete_funcRTコンポーネント破棄用関数
戻り値
登録処理結果(登録成功:true、失敗:false)

◆ removeLocalServiceActionListener()

void RTC::Manager::removeLocalServiceActionListener ( RTM::LocalServiceActionListener * listener)

◆ removeManagerActionListener()

void RTC::Manager::removeManagerActionListener ( RTM::ManagerActionListener * listener)

◆ removeModuleActionListener()

void RTC::Manager::removeModuleActionListener ( RTM::ModuleActionListener * listener)

◆ removeNamingActionListener()

void RTC::Manager::removeNamingActionListener ( RTM::NamingActionListener * listener)

◆ removeRtcLifecycleActionListener()

void RTC::Manager::removeRtcLifecycleActionListener ( RTM::RtcLifecycleActionListener * listener)

◆ removeTask()

static void RTC::Manager::removeTask ( TaskId id)
inlinestatic

周期実行タスクの削除

タイマーに登録されている周期タスクを削除する。

引数
id削除対象のタスクを示す ID

◆ runManager()

void RTC::Manager::runManager ( bool no_block = false)

Managerの実行

このオペレーションはマネージャのメインループを実行する。このメインループ 内では、タイマー処理が行われる。また CORBA ORB のイベントループ等も開始さ れる。デフォルトでは、このオペレーションはブロックし、 Manager::terminate() や シグナルハンドラーが呼ばれるまで処理を戻さない。 引数 no_block が true に設定されている場合は、内部でイベントループを処理 するスレッドを起動し、ブロックせずに処理を戻す。

引数
no_blockfalse: ブロッキングモード, true: ノンブロッキングモード

◆ setEndpointProperty()

void RTC::Manager::setEndpointProperty ( CORBA::Object_ptr objref)
protected

corba.endpoints にエンドポイント情報を設定する

◆ setModuleInitProc()

void RTC::Manager::setModuleInitProc ( ModuleInitProc proc)

初期化プロシージャのセット

このオペレーションはユーザが行うモジュール等の初期化プロシージャ を設定する。ここで設定されたプロシージャは、マネージャが初期化され、 アクティブ化された後、適切なタイミングで実行される。

引数
proc初期化プロシージャの関数ポインタ

◆ shutdown()

void RTC::Manager::shutdown ( )
protected

マネージャ・シャットダウン

マネージャの終了処理を実行する。 ORB終了後、同期を取って終了する。

◆ shutdownComponents()

void RTC::Manager::shutdownComponents ( )
protected

NamingManager に登録されている RTコンポーネントの終了処理

NamingManager に登録されているRTコンポーネントのリストを取得し、 全コンポーネントを終了する。

◆ shutdownLogger()

void RTC::Manager::shutdownLogger ( )
protected

System Logger の終了処理

System Loggerの終了処理を実行する。 バッファ内に保持されているログ情報が存在する場合には、 強制的にログファイルに出力し、ログファイルを閉じる。

◆ shutdownManagerServant()

void RTC::Manager::shutdownManagerServant ( )
protected

Managerサーバント の終了処理

ManagerサーバントのCORBAオブジェクトの非活性化、 終了処理を実行する。

◆ shutdownNaming()

void RTC::Manager::shutdownNaming ( )
protected

NamingManager の終了処理

NamingManager を終了する。 登録されている全要素をアンバインドし、終了する。

◆ shutdownORB()

void RTC::Manager::shutdownORB ( )
protected

ORB の終了処理

ORB の終了処理を実行する。 実行待ちの処理が存在する場合には、その処理が終了するまで待つ。 実際の終了処理では、POA Managerを非活性化し、 ORB のシャットダウンを実行 する。

◆ subscribePorts()

void RTC::Manager::subscribePorts ( RTObject_impl * comp)
protected
引数
comp

◆ terminate()

static void RTC::Manager::terminate ( )
static

マネージャ終了処理

マネージャの終了処理を実行する。

◆ theORB()

CORBA::ORB_ptr RTC::Manager::theORB ( )

ORB のポインタを取得する (所有権保持)

Manager に設定された ORB のポインタを取得する。所有権は保持され たままである。_var型で受ける場合は getORB() を用いること。この関 数は以下のようにORBのオペレーションを直接呼ぶ場合に利用する。

Manager::instance().theORB()->string_to_object(<IOR string>);

戻り値
ORB オブジェクト

◆ thePOA()

PortableServer::POA_ptr RTC::Manager::thePOA ( )

Manager が持つ RootPOA のポインタを取得する (所有権保持)

Manager に設定された RootPOA へのポインタを取得する。所有権は保持され たままである。_var型で受ける場合は getPOA() を用いること。この関 数は以下のようにPOAのオペレーションを直接呼ぶ場合に利用する。

Manager::instance().getPOA()->servant_to_id(m_servant);

戻り値
RootPOAオブジェクト

◆ thePOAManager()

PortableServer::POAManager_ptr RTC::Manager::thePOAManager ( )

Manager が持つ POAManager を取得する (所有権保持)

Manager に設定された POAMAnager を取得する。所有権は保持され たままである。_var型で受ける場合は getORB() を用いること。この関 数は以下のようにORBのオペレーションを直接呼ぶ場合に利用する。

Manager::instance().thePOAManager()->activate();

戻り値
POAマネージャ

◆ unload()

void RTC::Manager::unload ( const char * fname)

モジュールのアンロード

モジュールをアンロードする

引数
fnameモジュールのファイル名

◆ unloadAll()

void RTC::Manager::unloadAll ( )

全モジュールのアンロード

モジュールをすべてアンロードする

◆ unregisterComponent()

bool RTC::Manager::unregisterComponent ( RTObject_impl * comp)

RTコンポーネントの登録を解除する

指定したRTコンポーネントの登録を解除する。

引数
comp登録解除対象RTコンポーネントのインスタンス
戻り値
登録解除処理結果(解除成功:true、解除失敗:false)

メンバ詳解

◆ m_argv

coil::Argv RTC::Manager::m_argv
protected

ORB_init に指定する引数

omniORB の実装がひどすぎて、ORB_init後も与えた引数を維持しなければならない。

◆ m_argvSize

int RTC::Manager::m_argvSize
protected

ORB_init に指定する引数

omniORB の実装がひどすぎて、ORB_init後も与えた引数を維持しなければならない。

◆ m_compManager

ComponentManager RTC::Manager::m_compManager
protected

コンポーネントマネージャ

◆ m_config

coil::Properties RTC::Manager::m_config
protected

Manager の configuration を格納する Properties

参照元 getConfig(), getLogLevel().

◆ m_ecfactory

ECFactoryManager RTC::Manager::m_ecfactory
protected

ExecutionContext マネージャ

◆ m_ecs

std::vector<ExecutionContextBase*> RTC::Manager::m_ecs
protected

ExecutionContext リスト

◆ m_factory

FactoryManager RTC::Manager::m_factory
protected

ComponentManager

◆ m_finalized

Finalized RTC::Manager::m_finalized
protected

◆ m_initProc

ModuleInitProc RTC::Manager::m_initProc {nullptr}
protected

ユーザ初期化関数へのポインタ

◆ m_invoker

coil::Timer<coil::DelayedFunction> RTC::Manager::m_invoker
protected

Manager スレッド上での遅延呼び出し用タイマー

◆ m_isRunning

std::atomic_flag RTC::Manager::m_isRunning
staticprotected

メインスレッド停止用フラグ

◆ m_listeners

::RTM::ManagerActionListeners RTC::Manager::m_listeners
protected

◆ m_logfiles

std::vector<std::filebuf*> RTC::Manager::m_logfiles
protected

ログ出力ファイル

◆ m_logStreamBuf

LogStreamBuf RTC::Manager::m_logStreamBuf
protected

ロガーバッファ

参照元 getLogStreamBuf().

◆ m_mgrservant

RTM::ManagerServant* RTC::Manager::m_mgrservant {nullptr}
protected

ManagerServant へのポインタ

◆ m_module

ModuleManager* RTC::Manager::m_module {nullptr}
protected

ModuleManager へのポインタ

◆ m_namingManager

NamingManager* RTC::Manager::m_namingManager {nullptr}
protected

NamingManager へのポインタ

◆ m_needsTimer

bool RTC::Manager::m_needsTimer {false}
protected

マネージャーがタイマーを利用するかどうかのフラグ

◆ m_pORB

CORBA::ORB_var RTC::Manager::m_pORB
protected

ORB へのポインタ

◆ m_pPOA

PortableServer::POA_var RTC::Manager::m_pPOA
protected

POA へのポインタ

◆ m_pPOAManager

PortableServer::POAManager_var RTC::Manager::m_pPOAManager
protected

POAManager へのポインタ

◆ m_scheduler

coil::Timer<coil::PeriodicFunction> RTC::Manager::m_scheduler
protected

Manager スレッド上での周期呼び出し用タイマー

◆ m_signals

std::list<coil::SignalAction> RTC::Manager::m_signals
protected

シグナル管理用配列

◆ m_threadMain

std::thread RTC::Manager::m_threadMain
protected

Manager のメインスレッド

◆ m_threadOrb

std::thread RTC::Manager::m_threadOrb
protected

ORB 用のスレッド

◆ manager

Manager* RTC::Manager::manager
staticprotected

唯一の Manager へのポインタ

◆ mutex

std::mutex RTC::Manager::mutex
staticprotected

唯一の Manager へのポインタに対する mutex

◆ rtclog

Logger RTC::Manager::rtclog {&m_logStreamBuf}
protected

ロガーストリーム


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