機能 #3403
④ 起動時にコンポーネントをアクティベーションする機能(同一プロセス)
100%
Description
コンポーネント起動時に同一プロセス内のコンポーネントをコンポーネントコンフィギュレーションファイルに従いアクティベーションする機能を実装すること。
Associated revisions
[incompat,new_func,->RELENG_1_2] add initPreActivation() to Manager. refs #3403
History
#1 Updated by miyamoto over 7 years ago
- Due date set to 03/25/2016
- Assignee set to miyamoto
- Target version set to RELEASE_1_2_0
- % Done changed from 0 to 90
- Estimated time set to 30.00 h
#2 Updated by miyamoto over 7 years ago
- File test_Manager_new.py test_Manager_new.py added
実装¶
ManagerクラスにinitPreActivation関数を実装した。
rtc.confに以下のように記述する事でRTCのアクティブ化が行われる。
manager.components.preactivate RTC1,RTC2
initPreActivation関数では以下の手順でRTCをアクティブ化している。
","で文字列を分割comps = str(self._config.getProperty("manager.components.preactivate")).split(",")
→["RTC1","RTC2"]
compsのそれぞれの要素からコンポーネントのオブジェクトを取得
comp = self.getComponent(c)
RTCをアクティブ化
ret = OpenRTM_aist.CORBA_RTCUtil.activate(comp.getObjRef())
initPreActivation関数をactivateManager関数で呼び出すことでRTCがアクティブ化される。
テスト¶
添付したテスト用コードでテストを行った。
テスト用コードの動作は以下のようになっている。
setUp関数
マネージャ初期化の引数設定sys.argv.extend(['-o', 'manager.components.preactivate:TestComp10'])
マネージャ初期化self.manager = OpenRTM_aist.Manager.init(sys.argv)
self.manager.setModuleInitProc(MyModuleInit)
self.manager.activateManager()
→
TestComp10,TestComp20の2種類のRTCが起動する。
test_PreActivation関数
アクティブ化しているかを確認state = OpenRTM_aist.is_in_active(self.comp1)
self.assertTrue(state)
#3 Updated by miyamoto about 7 years ago
- % Done changed from 90 to 100
#4 Updated by n-ando almost 6 years ago
- Status changed from 新規 to 終了
[incompat,new_func,->RELENG_1_2] add initPreActivation() to Manager. refs #3403