<div dir="ltr">坂本様<div><br></div><div>安藤です</div><div><br></div><div>CORBA::Object_var obj = mgr_.getPOA()->id_to_reference(oid_.in());<br></div><div>でだめなら、</div><div><span style="font-size:14px">servant_ = new ComponentObserverImpl();</span><br></div><div>CORBA::Object_var obj = servant._this();<br></div><div>とかでしょうか?</div><div>わざわざObjectIdからリファレンスを取得しているのには何か理由があるのでしょうか?</div><div>デフォルトPOA以外のPOAを使っているとか?</div><div><br></div><div>あと参考になるのは、CorbaPort.h の CorbaProviderHolder でしょうか?</div><div>ここなら、サーバントのポインタを受け取って、IORを取得するところまでやっていますね。</div><div><br></div><div>宮本君</div><div><br></div><div>あとよろしく。</div><div><br></div><div class="gmail_extra"><div></div>
<br><div class="gmail_quote">2017年11月21日 10:18 Sakamoto Takeshi <span dir="ltr"><<a href="mailto:sakamoto@globalassist.co.jp" target="_blank">sakamoto@globalassist.co.jp</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">安藤 様<br>
<br>
<br>
いつもお世話になっております.<br>
グローバルアシストの坂本です.<br>
<br>
ご連絡ありがとうございます.<br>
</span>本当に何度もご面倒をお掛けしてしまい,<wbr>たいへん申し訳ございません.<br>
<span class="gmail-"><br>
> OpenRTM::ComponentObserver_var _provider = mgr_.getPOA()->id_to_<br>
> reference(oid_.in());<br>
> ではなく、<br>
> CORBA::Object_var obj = mgr_.getPOA()->id_to_<wbr>reference(oid_.in());<br>
> OpenRTM::ComponentObserver_var _provider =<br>
> OpenRTM::ComponentObserver::_<wbr>narrow(obj);<br>
> のように、CORBA::Object 型から特定の方にnarrowが必要です。<br>
</span>アドバイスありがとうございます.<br>
<br>
ただ,上記のコードに変更して試してみたのですが,<br>
実行時に以下の部分で落ちてしまいました.<br>
<span class="gmail-"> CORBA::Object_var obj = mgr_.getPOA()->id_to_<wbr>reference(oid_.in());<br>
<br>
</span>> この辺のコードは ManagerServant.cpp などにも同じものがありますので参考にしてください。<br>
こちらも情報ありがとうございます.<br>
今回の処理と似た処理を行っている部分は「<wbr>createINSManager」の部分でしょうか?<br>
(_narrowを行っているのが,<wbr>createINSManagerとfindManagerでし<wbr>たので・・・)<br>
再度,こちらを参考に修正を行わせて頂きます.<br>
<br>
#CORBA::Object_var mgrobj = poa->id_to_reference(id);<br>
#を実行する前に,<br>
#poa->activate_object_with_id(<a href="http://id.in" rel="noreferrer" target="_blank"><wbr>id.in</a>(), this);<br>
#を実行する必要があるのでしょうか・・・試しに<br>
#mgr_.getPOA()->activate_<wbr>object_with_id(<a href="http://oid.in" rel="noreferrer" target="_blank">oid.in</a>(), servant);<br>
#としてみた所,ここで落ちてしまったのですが・・・<br>
<br>
よろしくお願いいたします.<br>
<span class="gmail-im gmail-HOEnZb"><br>
> 安藤です<br>
><br>
> すみません、narrow しないとダメでした。<br>
><br>
> OpenRTM::ComponentObserver_var _provider = mgr_.getPOA()->id_to_<br>
> reference(oid_.in());<br>
> ではなく、<br>
> CORBA::Object_var obj = mgr_.getPOA()->id_to_<wbr>reference(oid_.in());<br>
> OpenRTM::ComponentObserver_var _provider =<br>
> OpenRTM::ComponentObserver::_<wbr>narrow(obj);<br>
> のように、CORBA::Object 型から特定の方にnarrowが必要です。<br>
><br>
> この辺のコードは ManagerServant.cpp などにも同じものがありますので参考にしてください。<br>
><br>
<br>
</span><div class="gmail-HOEnZb"><div class="gmail-h5">-----------<br>
株式会社 グローバルアシスト<br>
坂本 武志<br>
<a href="mailto:sakamoto@globalassist.co.jp">sakamoto@globalassist.co.jp</a><br>
</div></div></blockquote></div><br></div></div>