[openrtm-users 00802] Re: RefCount

Ando Noriaki n-ando @ aist.go.jp
2009年 5月 29日 (金) 08:45:19 JST


清水様

安藤です

ご指摘の通りです。
CORBAの通常のルールでは、オブジェクトリファレンスを
return時には内部でリファレンスの所有権を放棄(例えばduplicate()し)、
外でreleaseするのが正しいです。

> OpenRTM-aist開発者の皆様
>
> Configuration_impl::getObjRef();
> で、RefCountをインクリメントしていないのですが、
> これは意図したものでしょうか。
> (var型のreturnはptr型をそのまま返すだけ
> のようです。omniORB4/templatedecls.h参照。)
>
> 基本ルールからすると、duplicateしたほうが安全では、
> と考えます。

この辺は、CORBAインターフェースとそうでないインターフェースの
オブジェクトリファレンスの扱いをそれぞれどう扱うかの問題で、
CORBAインターフェースの方は選択の余地はありませんが、
それ以外のインターフェースでは、以前は結構適当に扱ってました
ので、現在それらを直す作業を行っています。

ちなみに、getObjRef()が参照をduplicateしないのは、
rtobj.getObjRef()->get_component_profile() のように ->演算子を
ダイレクトに使えたり便利なのでこのようにしてました。

-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                  知能システム研究部門 統合知能研究グループ
                  〒305-8568 茨城県つくば市梅園1-1-1 中央第2
                  TEL: 029-861-5981 FAX: 029-862-6631
                  n-ando @ aist.go.jp, n-ando @ ieee.org



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