[openrtm-users 00297] Re: サービスポートで非同期呼出し

Ando Noriaki n-ando @ aist.go.jp
2007年 12月 3日 (月) 09:40:04 JST


千代様

産総研 安藤です

ためしに、サンプルを作成してみましたのでお送りいたします。

MyServiceProviderCompとMyServiceConsumerCompを起動して、
ポート同士を接続して、その後両者をActivateしてください。

MyServiceConsumerCompの方で、
do? (push any key and enter)
と出ますので、適当な文字とenterを押してください。
Provider側への呼び出しはすぐにもどって、MyServiceProviderCompの方では、
1秒間隔で、

processing

と10回出ます。
その後、MyServiceProviderCompの方でdoneと表示されると同時に、
MyServiceConsumerCompの方でもdoneと表示されます。

参考にしてみてください。

07/12/01 に Ando Noriaki<n-ando @ aist.go.jp> さんは書きました:
> 千代様
>
> 産総研 安藤です
>
> > 慶応義塾大学の千代と申します。
> >
> > Service Portを用いて非同期でリモートオブジェクトの呼出しを
> > したいと考えています。
> >
> > 具体的には、Service Portから非同期でリモートオブジェクトの関数を
> > 呼出して、その処理が終わったらイベントをPushする。
> >
> > 呼出元がイベントを受け取ったら、呼出元のオブジェクトで
> > あらかじめ登録しておいたイベントハンドラの関数を
> > 実行するというような手順を考えています。
> >
> > 戻り値の書き込みはデータポートのようにコールバックオブジェクトで
> > OnWriteConvert関数を利用するような形で実装することを考えています。
> >
> > Service Portで非同期呼出しをするにはどのように実装すれば
> > よいのでしょうか。
>
> 現在のOpenRTMではそのようなことを行う標準的な方法はありません。
> しかしながら、サービスポートをうまく使えば、おっしゃるようなことは実現可能です。
> まず、前提として、一つのポートにはプロバイダインターフェースとコンシューマ
> インターフェースを任意の数だけ持たせることが可能です。
>
> あるサービスポートののプロバイダ側で、
>
> interface MyService
> {
>  oneway void do();
> };
>
> という、サービスプロバイダを持たせ、かつ同じポートに、
>
> interface Callback
> {
>  void done();
> };
>
> のような、コンシューマを持たせます。
>
> サービスコンシューマの方は、これと逆にプロバイダとコンシューマを持たせます。
> つまり、
> - MyService のコンシューマ
> - Callbackのプロバイダ
> を持つことになります。
> これらのプロバイダとコンシューマはポートを接続することにより相互に接続されます。
>
> MyServiceのプロバイダ側では、do()の処理が終わったら、
> そのコンシューマのdone()を呼んでやることで、呼び出し側に
> 処理が終わったことを知らせることが可能です。
>
> このような方法でどうでしょうか?
> --
> 安藤慶昭@独立行政法人産業技術総合研究所 研究員
>                   知能システム研究部門 タスクインテリジェンス研究グループ
>                   〒305-8568 茨城県つくば市梅園1-1-1 中央第2
>                   TEL: 029-861-5981 FAX: 029-861-5971
>                   n-ando @ aist.go.jp, n-ando @ ieee.org
>


-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                   知能システム研究部門 タスクインテリジェンス研究グループ
                   〒305-8568 茨城県つくば市梅園1-1-1 中央第2
                   TEL: 029-861-5981 FAX: 029-861-5971
                   n-ando @ aist.go.jp, n-ando @ ieee.org
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: Callback.tgz
型:         application/x-gzip
サイズ:     9135 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20071203/415ab939/attachment-0001.bin>


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