[openrtm-users 01626] ポート間の接続について、0.4.2と1.0.0の差分と解決方法を教えてください
Shuichiro Namiki
schu @ tjsys.co.jp
2011年 3月 1日 (火) 15:55:56 JST
並木と申します。
今回、初めて質問いたします。よろしくお願いします。
最近、OpenRTMをはじめまして、
別の方が0.4.2で作成した内容を1.0.0で
作り直すことになりました。
(言語はJavaを使用しています)
0.4.2では以下のようなソースでポートを接続していたのですが、
1.0.0ではDataFlowComponentからget_portsを使用しようとすると
ClassCastExceptionを起こしてしまい、キャストできずに
PortServiceの取得ができません。
(0.4.2で動作することは確認が取れております)
0.4.2→1.0.0にする上でどこに差分があって、
どのように修正すればよいか
ご存知な方教えていただけますようお願いいたします。
(0.4.2で作成済みのソースから抜粋)
====
String connector_id = null;
ConnectorProfile prof = null;
// サーバ側のCobraConsumerを取得
CorbaConsumer consumerServerDB = null;
ORB orb = ORBUtil.getOrb();
CorbaNaming naming = new CorbaNaming(orb, nameServer);
// nameServerは文字列"localhost:2809"
consumerServerDB =
new CorbaConsumer<DataFlowComponent>(DataFlowComponent.class);
consumerServerDB.setObject(naming.resolve(serverURI + ".rtc"));
// serverURIは任意指定の文字列
// ローカル側のCobraConsumerを取得
CorbaConsumer consumerLocalDB = null;
consumerLocalDB =
new CorbaConsumer<DataFlowComponent>(DataFlowComponent.class);
consumerLocalDB.setObject(naming.resolve(thisConsumerName + ".rtc"));
// thisConsumerNameは任意指定の文字列
PortListHolder p1 = new PortListHolder();
PortListHolder p2 = new PortListHolder();
// サーバ側とローカル側のポートを取得
// ★ここで1.0.0の場合はキャスト失敗する★
p1.value =
((DataFlowComponent) consumerServerDB._ptr()).get_ports();
p2.value =
((DataFlowComponent) consumerLocalDB._ptr()).get_ports();
prof = new ConnectorProfile();
connector_id = serverURI + "_" + thisConsumerName;
prof.connector_id = connector_id;
prof.name = connector_id;
prof.properties = new NameValue[0];
prof.ports = new Port[2]; // 1.0.0ではPortからPortServiceに変更
prof.ports[0] = p1.value[0];
prof.ports[1] = p2.value[0];
// ローカルとサーバのポートを接続
ConnectorProfileHolder proflist = new ConnectorProfileHolder(prof);
proflist.value = prof;
ReturnCode_t ret = prof.ports[0].connect(proflist);
====
(ソースから抜粋)の9行目、14行目を<DataFlowComponent>ではなく、
<RTObject>に変えてみたりもしたのですが、
RTCBuilderで生成する際にDataFlowを指定しているので
今度は(というかやはり)最後のconnectで接続失敗してしまいます。
以上です。よろしくお願いいたします。
openrtm-users メーリングリストの案内