OpenRTM-aist IDL
1.2
|
import"Manager.idl";
RTコンポーネントのライフサイクルの管理などを行うManagerへの外部イ ンターフェース。主たる機能としては、以下のものがある。
マネージャには、同一ノード内で原則1つしか存在しないマスターマネー ジャと、マスターマネージャの管理下に0個以上存在するスレーブマネー ジャが存在する。
マスターマネージャは通常、デーモン・サービスなどとして常駐し、ノー ドのOS稼働中は原則として常に動作し続ける。また、マスターマネージャ は自身の内部にRTCを生成・ホストせず、RTCの生成はスレーブマネージャ に依頼する。依頼するスレーブマネージャは、すでに起動しているもので も、マスターマネージャが新規に起動してもよい。どちらの方法でRTCを 生成するかは、create_component() の引数にて指定する。なお、スレー ブマネージャは通常、1つ以上のRTCをホストする。デフォルトの設定では、 RTCをホストしていないスレーブマネージャは自動終了する。 設定項目:
1 0..* 1 1..* [ master ]<>-------—[ slave ]<>-------—[ RTC ]
RTC::ReturnCode_t RTM::Manager::add_master_manager | ( | in Manager | mgr | ) |
マスターマネージャの追加
このマネージャのマスタとしてマネージャを一つ追加する。
マスターマネージャとスレーブマネージャの関係は、以下の図のように、 一つのノード (node: 1つの独立したコンピュータでありホスト) に対 して、1つのマスター (master) マネージャが対応する。1つのマスター マネージャの下には0個以上のスレーブ (slave) マネージャが存在し、 RTCは1つのスレーブマネージャに属する。なお、スレーブマネージャは 通常、1つ以上のRTCをホストする。デフォルトの設定では、RTCをホス トしていないスレーブマネージャは自動終了する。
1 1 1 0..* 1 1..* [ node ]<>--------[ master ]<>--------[ slave ]<>--------[ RTC ]
マスターとスレーブの関係は、add/remove_master_manager(), add_remove_slave_manager() オペレーションによって構成される。こ れらのオペレーションは原則として、すべてスレーブマネージャからア クションを開始する。マスターマネージャは原則として、 corbaloc://localhost:2810/manager によりオブジェクト参照を取得で きる一方、スレーブマネージャの参照を知る一般的方法はない。スレー ブマネージャは、起動時にローカルのマスターマネージャを探して、内 部的にこのオペレーションを呼び出し、マスターマネージャを追加する とともに、マスターマネージャに対して、add_slabe_manager() を呼び 出して、マスターマネージャに対して、スレーブマネージャが配下に入っ たことを知らせる。
[ master ] [ slave ] | | | |--, find master | | | by corbaloc: | |<-' | | | |--, | | | add_master_manager() | add_slave_manager(own_ref)|<-' |<--------------------------| | |
mgr | マスターマネージャ |
RTC::ReturnCode_t RTM::Manager::add_slave_manager | ( | in Manager | mgr | ) |
スレーブマネージャの追加
このマネージャのマスタとしてマネージャを一つ追加する。通常、スレー ブマネージャは、起動時にローカルのマスターマネージャを探して、内 部的に、add_master_manager() を呼び出し、マスターマネージャを追 加するとともに、マスターマネージャに対して、この add_slave_manager() を呼び出して、マスターマネージャに対して、ス レーブマネージャが配下に入ったことを知らせる。
[ master ] [ slave ] | | | |--, find master | | | by corbaloc: | |<-' | | | |--, | | | add_master_manager() | add_slave_manager(own_ref)|<-' |<--------------------------| | |
mgr | スレーブマネージャ |
RTC::RTObject RTM::Manager::create_component | ( | in string | module_name | ) |
コンポーネントを生成する
引数に指定されたコンポーネントを生成する。マスターマネージャに対 してこのオペレーションが呼び出された場合には、スレーブマネージャ に対してコンポーネントの生成を依頼する。依頼対象となるスレーブマ ネージャは、create_component() の引数内パラメータ manager_name により指定されたマネージャが配下にある場合は、そのマネージャに対 して、create_component() を呼び出すことで生成、manager_name で指 定されたマネージャがない場合は、新規にスレーブマネージャを起動し てからコンポーネントを生成する。
(maanger_name = servo) [ app ] [ master ] [ slave ] [ RTC ] | create_comp() | | . |---------------->| | . | manager_name = |--, search | . | servo | | slaves | . | |<-' | . | | create_comp() | . | |---------------->| . | | |--, . | | | |createComp() . | | |<-' . | | |.....create...> . | | | | | | | |
[ app ] [ master ] [ slave ] [ RTC ] | create_comp() | . . |---------------->| . . | manager_name = |--, search . . | controller | | slaves . . | |<-' . . | | launch proc . . | |---------------->| . | | create_comp() | . | |---------------->| . | | |--, . | | | |createComp() . | | |<-' . | | |.....create...> . | | | | | | | |
指定パラメータ
module_name | 生成対象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::ReturnCode_t RTM::Manager::delete_component | ( | in string | instance_name | ) |
コンポーネントを削除する
引数に指定されたコンポーネントを削除する。マスターマネージャに対 してこのオペレーションが呼び出された場合、配下のスレーブコンポー ネント上の当該コンポーネントを削除する。ただし、通常は対象コンポー ネントに対して exit() オペレーションを呼び出すことで RTC を終了 させる方法を推奨する。
RTC::ReturnCode_t RTM::Manager::fork | ( | ) |
マネージャプロセスをforkする
RTC::ComponentProfileList RTM::Manager::get_component_profiles | ( | ) |
起動中のコンポーネントプロファイルのリストを取得する
現在当該マネージャ上で起動中のコンポーネントのプロファイルのリス トを返す。マスターマネージャに対してこのオペレーションが呼び出さ れた場合、配下のスレーブコンポーネント上で実行中のRTCのプロファ イルリストを収集して返す。スレーブマネージャに対して呼び出された 場合には、自身が管理する起動中のRTCのプロファイルリストのみを返 す。
RTC::RTCList RTM::Manager::get_components | ( | ) |
起動中のコンポーネントのリストを取得する
現在当該マネージャ上で起動中のコンポーネントのリストを返す。マス ターマネージャに対してこのオペレーションが呼び出された場合、配下 のスレーブコンポーネント上で実行中のRTCのリストを収集して返す。 スレーブマネージャに対して呼び出された場合には、自身が管理する起 動中のRTCのリストのみを返す。
RTC::RTCList RTM::Manager::get_components_by_name | ( | in string | name | ) |
指定名のRTCオブジェクトリファレンスを取得
name | RTC名 |
NVList RTM::Manager::get_configuration | ( | ) |
マネージャのコンフィギュレーションを取得する
現在当該マネージャのコンフィギュレーションを取得する。
ModuleProfileList RTM::Manager::get_factory_profiles | ( | ) |
コンポーネントファクトリのプロファイルを取得する
ロード済みのモジュールのうち、RTコンポーネントのモジュールが持つ ファクトリのプロファイルのリストを取得する。このオペレーションで は、スレーブマネージャに対しても同じオペレーションが再帰的に呼び 出され、配下にあるすべてのマネージャが保有するRTコンポーネントの プロファイルを返す。
ModuleProfileList RTM::Manager::get_loadable_modules | ( | ) |
ロード可能なモジュールのプロファイルを取得する
ロード可能なモジュールのプロファイルを取得する。ロード可能なRTコ ンポーネントのモジュールのプロファイルは、あらかじめ設定されたモ ジュールロードパスに対して、プロファイル取得コマンドを別プロセス で実行することで取得する。プロファイル取得対象となる言語の種類は、
で設定されている。ここで指定された言語に対して、以下のプロパティ で言語毎のモジュールロードパス、プロファイル取得コマンド、モジュー ル拡張子が指定される。
例えば、C++ 言語の場合は、以下のプロパティがデフォルトで設定されている。
マスターマネージャは、上記で設定されたすべての言語 (Windowsでは すべてのVCのバージョンも含む) のモジュールロードパスがあらかじめ 設定されている必要がある。 この作業は、このオペレーションが呼び 出されたマネージャ (通常はマスターマネージャ) 上でのみ実行され、 配下にあるスレーブマネージャ等に再帰的に呼び出されることはない。
implementation_id: ConfigSample type_name: ConfigSample description: Configuration example component version: 1.0 vendor: Noriaki Ando, AIST category: example activity_type: DataFlowComponent max_instance: 10 language: C++ lang_type: compile conf.default.int_param0: 0 conf.default.int_param1: 1 conf.default.double_param0: 0.11 conf.default.double_param1: 9.9 conf.default.str_param0: hoge conf.default.str_param1: dara conf.default.vector_param0: 0.0,1.0,2.0,3.0,4.0
ModuleProfileList RTM::Manager::get_loaded_modules | ( | ) |
ロード済みのモジュールのプロファイルを取得する
ロード済みのモジュールのプロファイルを取得する。このオペレーショ ンでは、スレーブマネージャに対しても同じオペレーションが再帰的に 呼び出され、配下にあるすべてのマネージャがロードしているすべての モジュールのプロファイルを返す。
ManagerList RTM::Manager::get_master_managers | ( | ) |
マスターマネージャの取得
このマネージャがスレーブマネージャの場合、マスターとなっているマ ネージャのリストを返す。このマネージャがマスターの場合、空のリス トが返る。原則としてスレーブマネージャは1つのマスターマネージャ の配下となるが、実装上はマスターマネージャは唯一となるような制約 はなく、add_master_manager() オペレーションにより複数のマスター マネージャを登録することが可能である。
ManagerProfile RTM::Manager::get_profile | ( | ) |
マネージャのプロファイルを取得する
現在当該マネージャのプロファイルを取得する。
Object RTM::Manager::get_service | ( | in string | name | ) |
サービスのオブジェクト参照を取得する
仕様未確定
ManagerList RTM::Manager::get_slave_managers | ( | ) |
スレーブマネージャの取得
このマネージャがスレーブマネージャの場合、スレーブとなっているマ ネージャのリストを返す。このマネージャがスレーブの場合、空のリス トが返る。
boolean RTM::Manager::is_master | ( | ) |
マネージャがマスターかどうか
この関数はマネージャがマスターかどうかを返す。Trueならば、当該マ ネージャはマスターであり、それ以外は False を返す。
RTC::ReturnCode_t RTM::Manager::load_module | ( | in string | pathname, |
in string | initfunc | ||
) |
モジュールをロードする
当該マネージャに指定されたモジュールをロードし、指定された初期化 関数で初期化を行う。任意の共有オブジェクトファイル (.so, .dll) をロード可能であり、コンポーネントの共有オブジェクトファイルに限 らない。通常、RTCの生成時は自動的にロードパス上を共有オブジェク トファイルを探索するため、この操作を呼び出す必要はない。
pathname | モジュールへのパス |
initfunc | モジュールの初期化関数 |
RTC::ReturnCode_t RTM::Manager::remove_master_manager | ( | in Manager | mgr | ) |
マスターマネージャの削除
このマネージャが保持するマスタのうち、指定されたものを削除する。 通常このオペレーションは、スレーブマネージャが終了する際に、自身 に対して呼び出される。また、スレーブマネージャ自身がマスターマネー ジャの配下から外れることを remove_slave_manager() により、マスター マネージャに対して通知する。
[ master ] [ slave ] | | | |--, shutdown | | | slave manager | |<-' | | | |--, | | | remove_master_manager() | remove_slave_manager(own_ref) |<-' |<------------------------------| | |
mgr | マスターマネージャ |
RTC::ReturnCode_t RTM::Manager::remove_slave_manager | ( | in Manager | mgr | ) |
スレーブマネージャの削除
このマネージャが保持するマスタのうち、指定されたものを削除する。 通常このオペレーションは、スレーブマネージャが終了する際に、自身 に対して remove_master_manager() を呼び出した後、スレーブマネー ジャ自身がマスターマネージャの配下から外れることを知らせるための、 この remove_slave_manager() をマスターマネージャに対して呼ぶこと で通知する。
[ master ] [ slave ] | | | |--, shutdown | | | slave manager | |<-' | | | |--, | | | remove_master_manager() | remove_slave_manager(own_ref) |<-' |<------------------------------| | |
mgr | スレーブマネージャ |
RTC::ReturnCode_t RTM::Manager::restart | ( | ) |
マネージャプロセスを再起動する
RTC::ReturnCode_t RTM::Manager::set_configuration | ( | in string | name, |
in string | value | ||
) |
マネージャのコンフィギュレーションを設定する
現在当該マネージャのコンフィギュレーションを設定する。
name | セットするコンフィギュレーションのキー名 |
value | セットするコンフィギュレーションの値 |
RTC::ReturnCode_t RTM::Manager::shutdown | ( | ) |
マネージャプロセスをshutdownする
RTC::ReturnCode_t RTM::Manager::unload_module | ( | in string | pathname | ) |
モジュールをアンロードする
当該マネージャに指定されたモジュールをアンロードする。現在のとこ ろ、OpenRTM-aistのモジュールロード機能は、ロードされたモジュール により生成されたオブジェクトのリファレンスカウント管理等は行われ ていないので、安易にモジュールをアンロードすると、メモリアクセス 違反を引き起こす恐れがある。ただ、多くの動的ライブラリのアンロー ドの実装では、実際にメモリ上からアンロードされないケースが多く、 したがってこのオペレーションは呼び出すことを推奨しない。
pathname | モジュールへのパス |