[openrtm-users 00813] Re: NullBuffer

Ando Noriaki n-ando @ aist.go.jp
2009年 6月 4日 (木) 09:36:34 JST


清水様

安藤です

以前はInPort,OutPortクラスの
テンプレートの第2引数にバッファを渡せるようにして
いましたが、1.0では第2引数はなくなりました。

OutPortでは、接続毎にConnectorオブジェクトが生成
され、バッファも同時に生成されます。つまり、接続毎に
バッファを持つようになります。
従いまして、0.4で存在した、複数のInPortへの出力が
できないというバグはなくなりました。

InPortでは、現在の実装では、接続に対してバッファは共有
されていますので、以前の挙動と変わりありません。
原理的には、接続毎にバッファ持たせることもできるようになっていて、
複数のOutPortからの入力を選択的に受け取ることが
できるようにもなっています。これはInPortMultとでも名前を
つけてじきに使えるようにはしたいと思っています。

バッファを動的に生成するといいましたが、生成するバッファは
ユーザが拡張できるようにもなっています。さらに、それを
ローダブルモジュールであとから追加できるようにも
なっています。が、ドキュメントを書いていないので、
実質ユーザが独自のバッファを拡張するのは難しそうですので、
現在のところ使用されるバッファはRingBufferのみとい前提で、
NullBufferについては放置しております。


ちなみに、バッファを接続毎に動的に生成可能にし、かつ
ローダブルモジュールで拡張可能にしたのは、将来的に
InPort/OutPortのバッファをコンポーネント間で共有する
(たとえば共有メモリで)タイプのバッファなどに拡張可能にするためです。




2009/06/04 2:49 に Masayuki Shimizu<masayuki.shimizu @ aist.go.jp> さんは書きました:
> OpenRTM-aist開発者の皆様
>
> ポート(バッファ)のソースを眺めていて思ったのですが、
> NullBufferはコンパイルエラーにならないですか?
>
> BufferBase::write(const DataType& value,
> long int sec = -1, long int nsec = -1);
> とその派生クラスの
> NullBuffer::write(const DataType& value);
> があるのですが、デフォルト引数のために、
> これらは一意に決まらないように思います。
> 試してないので、もしかしたら私が間違いかもしれません。
>
> 静岡大 清水
>
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                  知能システム研究部門 統合知能研究グループ
                  〒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 メーリングリストの案内