[openrtm-users 00409] Re: PortProfileのownerメンバ

kurihara shinji shinji.kurihara @ aist.go.jp
2008年 4月 3日 (木) 18:17:29 JST


スキューブド 佐藤様

お世話になっております。
産総研 栗原です。

PortProfileのownerがnilになっている件ですが、ご指摘の通りOpenRTM-aist-0.4.1
リリース版の実装ではownerのセットが行われておりません。

お手数ですが、RTObject.cppのregisterPort(PortBase& port)メソッドを下記のよう
に変更後、make -> make install にて対処していただけますでしょうか?

 // file: RTObject.cpp line: 1053
 void RTObject_impl::registerPort(PortBase& port)
  {
    m_portAdmin.registerPort(port);
    port.setOwner(this->getObjRef()); // <--- この一行を追加
    return;
  }

> 1) ownerメンバを得る方法はこれで問題ありませんでしょうか?
こちらでも、上記修正を行い、同様の方法にて相手のコンポーネントを取得して
おります。
手順としましては、 
 1. ConnectorProfileより、相手ポートオブジェクトを取得。
 2. 1.で取得したオブジェクトのget_port_profile()にて相手のPortProfileを取得。
    (PortProfileに相手ポートのオブジェクトが格納されている。)
です。

# このバグに関しましては、後程、OpenRTMオフィシャルサイトのToDo >  バグにア
# ップさせて頂きます。

以上、お手数お掛け致しますが、宣しくお願い致します。


> 安藤様
> 
> たびたび申し訳ありません。
> エスキューブドの佐藤です。
> 
> PortProfileのownerメンバについて質問があります。
> 
> 現在、コンポーネントのポートから相手のポートのPortProfile#ownerにアクセ
> スすることで相手のコンポーネントを取得するというコードを書いています。し
> かしながら、ownerメンバは常にnilとなっています。
> 
> また、PortBase#setOwnerメソッドでownerをセットするように見えますが、
> OpenRTM 0.4.1のコード中ではこのメソッドを使用していません。
> 
> つきましては以下の2つの質問にお答えいただけないでしょうか?
> 
> 1) ownerメンバを得る方法はこれで問題ありませんでしょうか?
> 
> 2) 相手のコンポーネントを得る方法は他にありますでしょうか?
> 
> お教えいただければ幸いです。
> 
> ---
> 佐藤 竜太
> 
> 


-- 
----------
栗原 眞二
shinji.kurihara @ aist.go.jp
kurihara @ imagination.co.jp



openrtm-users メーリングリストの案内