[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 メーリングリストの案内