[openrtm-users 01325] Re: OpenRTM-aist-Python-1.0.0の_narrow処理について

kurihara shinji shinji.kurihara @ aist.go.jp
2010年 6月 21日 (月) 09:54:20 JST


株式会社セック 池添様

お世話になっております。
栗原です。

ご指摘頂きました内容を修正させて頂きました。

修正内容は、
 ・InPortCorbaCdrConsumer.py :
    put(self,data)メソッドでのOpenRTM.InPortCdrへの_narrow処理の追加

 ・OutPortCorbaCdrConsumer.py :
    get(self,data)メソッドでのOpenRTM.OutPortCdrへの_narrow処理の追加
となっております。

最新のコードは、下記のSubversionリポジトリにコミット致しました。
(リビジョン366)

 http://openrtp.jp/openrtm/svn/OpenRTM-aist-Python/branches/RELENG_1_0/OpenRTM-aist-Python

他に不具合などお気づきの点がございましたら、ご連絡頂けますと幸いです。


以上、宜しくお願い致します。


On Thu, 17 Jun 2010 14:09:13 +0900
池添明宏 <ikezoe @ sec.co.jp> wrote:

> 栗原様
> 
> セックの池添です。
> お世話になっております。
> 
> 早速のご回答、ありがとうございます。
> 
> 
> > ただ、IORをstring_to_object()にてCORBAオブジェクトへ変換した
> > 場合は、_narrowしなくてもCORBA呼び出しが可能な場合もあるようです。
> >
> > 以下URLの「Narrowing object references」を参照下さい。
> 
> なるほど、repository idの持たせ方によって呼び出しの可否が
> 変わることがあるのですね。
> 確かにOpenRTM.NET側でオブジェクトを格納するときに、
> repository idが異なるものになっておりました。
> 
> 
> > 修正しましたら、再度ご連絡させて頂きます。
> 
> お手数をおかけしますが、よろしくお願いいたします。
> 
> 以上
> 
> 
> 
> (2010/06/17 13:45), kurihara shinji wrote:
> > 株式会社セック 池添様
> > 
> > お世話になっております。
> > 栗原です。
> > 
> > ご連絡頂き、誠に有難うございます。
> > 
> >> CORBAのプログラミング作法的に _narrow せずにCORBAメソッドを
> >> 呼び出しても問題ないものなのでしょうか?
> > いえ、基本的には_narrowする必要がございます。
> > ただ、IORをstring_to_object()にてCORBAオブジェクトへ変換した
> > 場合は、_narrowしなくてもCORBA呼び出しが可能な場合もあるようです。
> > 
> > 以下URLの「Narrowing object references」を参照下さい。
> > http://ports.gnu-darwin.org/devel/py-omniorb/work/omniORBpy-3.1/doc/omniORBpy.pdf
> > 
> > ただし、今回の場合は、単純に_narrowし忘れでして、たまたまC++,
> > Java,Python間では問題になっていなかっただけの事ですので、
> > _narrowするように修正致します。
> > 
> > 修正しましたら、再度ご連絡させて頂きます。
> > 
> > 
> > ご迷惑をお掛け致しまして申し訳ございません。
> > 宜しくお願い致します。
> > 
> > 
> > 
> > On Thu, 17 Jun 2010 11:30:32 +0900
> > 池添明宏<ikezoe @ sec.co.jp>  wrote:
> > 
> >> セックの池添です。
> >> # 連投、申し訳ありません。
> >>
> >> 私はOpenRTM.NETというRTミドルウェア実装を開発しているのですが、
> >> OpenRTM-aist-Python-1.0.0-RELEASEとのデータポートの連携に
> >> おいて問題が発生しております。
> >>
> >> OpenRTM-aist-Python-1.0.0-RELEASEのOutPortと、OpenRTM.NETのInPort
> >> を接続しデータを送信すると、接続が切れてしまいます。
> >> InPortCorbaCdrConsumer.pyのputメソッドの実装は下記のようになって
> >> いるのですが、self._ptr()を_narrowしていないため、self._ptr().put()
> >> の呼び出しに失敗してしまいます。
> >>
> >>    def put(self, data):
> >>      self._rtcout.RTC_PARANOID("put()")
> >>
> >>      try:
> >>        if self._ptr():
> >>          return self.convertReturnCode(self._ptr().put(data))
> >>        return self.CONNECTION_LOST
> >>      except:
> >>        self._rtcout.RTC_ERROR(sys.exc_info()[0])
> >>        return self.CONNECTION_LOST
> >>
> >>      return self.UNKNOWN_ERROR
> >>
> >>
> >> これを下記のように _narrow するように変更すれば、OpenRTM.NETとの
> >> 連携が可能になります。
> >> (この変更を加えても、C++版、Python版との連携に問題はありません)
> >>
> >>    def put(self, data):
> >>      self._rtcout.RTC_PARANOID("put()")
> >>
> >>      try:
> >>        if self._ptr():
> >>          ptr = self._ptr()
> >>          inportcdr = ptr._narrow(OpenRTM__POA.InPortCdr)
> >>          return self.convertReturnCode(inportcdr.put(data))
> >>        return self.CONNECTION_LOST
> >>      except:
> >>        self._rtcout.RTC_ERROR(sys.exc_info()[0])
> >>        return self.CONNECTION_LOST
> >>
> >>      return self.UNKNOWN_ERROR
> >>
> >>
> >> CORBAのプログラミング作法的に _narrow せずにCORBAメソッドを
> >> 呼び出しても問題ないものなのでしょうか?
> >> OpenRTM.NETの実装の方に問題があるのかもしれませんので、
> >> ご見解をお聞かせください。
> >>
> >> ちなみに、C++版では_narrow、 Java版ではcastTypeをして型を定めているので、
> >> Python版のような問題は発生しません。
> >>
> >> よろしくお願いいたします。
> >>
> >> 以上
> >>
> >> -- 
> >> ----------------------------------------------
> >> 株式会社セック 開発本部 第四開発部
> >> TEL: 03-5458-7743 FAX: 03-5458-7726
> >> 池添 明宏 E-mail: ikezoe @ sec.co.jp
> >> ----------------------------------------------
> >>
> >> ======================================================================
> >> この電子メールの内容および添付されている情報は、機密情報であると同時に、
> >> 宛先として意図した特定の受信者のみに送信いたしております。当方の誤送信
> >> 等により、心当たりのない方が受信された場合は、大変お手数ですが、受信さ
> >> れましたメール内容は削除していただきますようお願いいたします。
> >> ======================================================================
> >>
> > 
> > 
> 
> 
> -- 
> ----------------------------------------------
> 株式会社セック 開発本部 第四開発部
> TEL: 03-5458-7743 FAX: 03-5458-7726
> 池添 明宏 E-mail: ikezoe @ sec.co.jp
> ----------------------------------------------
> 
> ======================================================================
> この電子メールの内容および添付されている情報は、機密情報であると同時に、
> 宛先として意図した特定の受信者のみに送信いたしております。当方の誤送信
> 等により、心当たりのない方が受信された場合は、大変お手数ですが、受信さ
> れましたメール内容は削除していただきますようお願いいたします。
> ======================================================================
> 


-- 
----------
栗原 眞二 <shinji.kurihara @ aist.go.jp>

独立行政法人産業技術総合研究所
  知能システム研究部門 統合知能研究グループ
  〒305-8568
  茨城県つくば市梅園1-1-1 中央第2

  TEL: 029-861-5956



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