[openrtm-users 00793] Fw: サービスポートを使ったデータの受信について

Takuya Fukagai fukagai @ labs.fujitsu.com
2009年 5月 26日 (火) 17:14:08 JST


お世話になっております。
富士通研究所の深貝です。

下記の件について補足と質問を追加させていただきます。
下記IDLファイルを用い、Template Editorが生成したサービス
プロバイダー側のコードをコンパイルする際、コードを以下の
ように修正しました。(修正しないとコンパイルが通らなかった
ため)

(TestServiceSVC_impl.h)
修正前:
Data *getData();
修正後:
Data getData();
(TestServiceSVC_impl.cpp)
修正前:
Data *TestServiceSVC_impl::getData()
修正後:
Data TestServiceSVC_impl::getData()

そこで質問なのですが、サービスポートで構造体を返すことは
そもそもしてはいけないことなのでしょうか?

以上、よろしくお願いいたします。


Forwarded by Takuya Fukagai <fukagai @ labs.fujitsu.com>
----------------------- Original Message -----------------------
 From:    Takuya Fukagai <fukagai @ labs.fujitsu.com>
 To:      openrtm-users @ m.aist.go.jp
 Date:    Fri, 22 May 2009 17:05:52 +0900
 Subject: [openrtm-users 00792] サービスポートを使ったデータの受信について
----

はじめて投稿させていただきます。
富士通研究所の深貝と申します。

大容量(12MB)の構造体をサービスポートの関数の返り値として返
すようにしたところ、コンポーネントのactivate時にエラーが
発生してしまいました。
サイズが小さな構造体を返すようにしたときは問題がなかったので、
返す構造体の大きさに制限があるのではと考えています。

データポートでは2MBの制限があり、それはrtc.confにて最大サイズを
指定することで回避できるとのことでしたが、サービスポートの場合は
rtc.confに、
corba.args: -ORBgiopMaxMsgSize 31457280
のように30MBの最大値を指定しても問題を回避できませんでした。

サービスポートで扱うことのできるデータのサイズはデータポートとは
異なるのでしょうか?

以下にバグ再現用のテストで用いたIDLファイル記します。

---ここから--
const unsigned long DATA_SIZE = 3145728;
struct Data {
	unsigned long info[DATA_SIZE];
	unsigned long size;
};
interface TestService{
	Data getData();
};
---ここまで--

環境はOpenRTM-aist-0.4.2, OSはWindows XP, コンパイラはVisual C++ 2008です。
以上、よろしくお願いいたします。

-- 
株式会社富士通研究所 自律システム研究部
深貝 卓也 <fukagai @ labs.fujitsu.com>
TEL:046-250-8218, 内線:7121-5734



--------------------- Original Message Ends --------------------

-- 
株式会社富士通研究所 自律システム研究部
深貝 卓也 <fukagai @ labs.fujitsu.com>
TEL:046-250-8218, 内線:7121-5734





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