[openrtm-devel:00378] Manager::getPOAからのPOA::reference_to_servantでWrongAdapterエラーが出てるのですが・・・

ysuga @ ysuga.net ysuga @ ysuga.net
2014年 6月 12日 (木) 22:40:41 JST


お世話になります.菅です.
CORBAの初歩的な質問かもしれませんが,どなたか教えてください.
v_repというシミュレータ内でManagerを立て,RTCを起動し,外からシミュレータ全体をサービスポートで制御するプラグインを開発をしています.
そのサービスポートで,さらに外部プロセスのRTCのURIを投げると,その外部RTCに対して,シミュレータ内でSynchExtTriggerECを生成し,addComponentをするようにしています.
結果としてECが2つ,RTCに取り付く形になっちゃいますが,こうすると,何気なく起動したRTCを同期させることが出来ると考えています.
・・・が,上手く行きません.外部のRTCはJava版およびC++版のRTCですが同様の失敗です.シミュレータはC++版です.
上手く行かない症状は, 0.addComponentの返り値が2
(BAD_PARAMETER?)になる.
1.participantsのECがSystemEditorで上手く表示されない.rateなどがnullと表示されてしまう.
2.addComponentした直後のactivate_componentが失敗する.
C++のtrunkのコードを追っていくと,ECから外部のRTCのRTObject_ptrに対してaddComponent()をすると,RTObjectのattach_context()の呼び出し後に,
RTObjectStateMachineを生成して,そのコンストラクタの中で,setComponentAction()メソッド内で,
Manager::getPOA()で得たアダプタでreference_to_servantをやっているようですが,この部分で失敗しているようです.
ログを見てみましたが,この辺のログ出力があまりないのです・・・が,おおよそこの辺で失敗して,CORBA::Exceptionを送出しているというのは分かりました.
この部分のコードだけ取り出して実験してみたところ,reference_to_servantの部分でCORBA::WrongAdapterExceptionを送出してしまいます.
そもそもオブジェクトをactivateしたアダプタじゃないと,reference_to_servantできないと思うのですが,
僕の使い方が悪いのでしょうか?
どなたか詳しい方,回避方法など教えていただけませんか?



More information about the openrtm-devel mailing list