InPortCorbaProvider.py

説明を見る。
00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*-
00003 
00004 
00005 ##
00006 # @file  InPortCorbaProvider.py
00007 # @brief InPortCorbaProvider class
00008 # @date  $Date: 2007/09/25 $
00009 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara
00010 #
00011 # Copyright (C) 2006-2008
00012 #     Noriaki Ando
00013 #     Task-intelligence Research Group,
00014 #     Intelligent Systems Research Institute,
00015 #     National Institute of
00016 #         Advanced Industrial Science and Technology (AIST), Japan
00017 #     All rights reserved.
00018  
00019 
00020 from  omniORB import any
00021 import sys
00022 import traceback
00023 
00024 import OpenRTM
00025 import RTC,RTC__POA
00026 
00027 
00028 ##
00029 # @if jp
00030 # @class InPortCorbaProvider
00031 # @brief InPortCorbaProvider クラス
00032 #
00033 # 通信手段に CORBA を利用した入力ポートプロバイダーの実装クラス。
00034 #
00035 # @since 0.4.0
00036 #
00037 # @else
00038 # @class InPortCorbaProvider
00039 # @brief InPortCorbaProvider class
00040 # @endif
00041 class InPortCorbaProvider(OpenRTM.InPortProvider, RTC__POA.InPortAny):
00042   """
00043   """
00044 
00045 
00046 
00047   ##
00048   # @if jp
00049   # @brief コンストラクタ
00050   #
00051   # コンストラクタ
00052   # ポートプロパティに以下の項目を設定する。
00053   #  - インターフェースタイプ : CORBA_Any
00054   #  - データフロータイプ : Push, Pull
00055   #  - サブスクリプションタイプ : Any
00056   #
00057   # @param self
00058   # @param buffer_ 当該プロバイダに割り当てるバッファオブジェクト
00059   #
00060   # @else
00061   # @brief Constructor
00062   # @endif
00063   def __init__(self, buffer_):
00064     OpenRTM.InPortProvider.__init__(self)
00065     self._buffer = buffer_
00066 
00067     # PortProfile setting
00068     self.setDataType(self._buffer.getPortDataType())
00069     self.setInterfaceType("CORBA_Any")
00070     self.setDataFlowType("Push, Pull")
00071     self.setSubscriptionType("Any")
00072 
00073     # ConnectorProfile setting
00074     self._objref = self._this()
00075 
00076 
00077   ##
00078   # @if jp
00079   # @brief Interface情報を公開する
00080   #
00081   # Interface情報を公開する。
00082   #
00083   # @param self
00084   # @param prop Interface情報を受け取るプロパティ
00085   #
00086   # @else
00087   #
00088   # @endif
00089   def publishInterface(self, prop):
00090     if not OpenRTM.NVUtil.isStringValue(prop,
00091                 "dataport.interface_type",
00092                 "CORBA_Any"):
00093       return
00094 
00095     nv = self._properties
00096     OpenRTM.CORBA_SeqUtil.push_back(nv,
00097             OpenRTM.NVUtil.newNV("dataport.corba_any.inport_ref",
00098                      self._objref))
00099     OpenRTM.NVUtil.append(prop, nv)
00100 
00101 
00102   ##
00103   # @if jp
00104   # @brief バッファにデータを書き込む
00105   #
00106   # 設定されたバッファにデータを書き込む。
00107   #
00108   # @param self
00109   # @param data 書込対象データ
00110   #
00111   # @else
00112   #
00113   # @endif
00114   def put(self, data):
00115     try:
00116       tmp = any.from_any(data, keep_structs=True)
00117       self._buffer.write(tmp)
00118     except:
00119       traceback.print_exception(*sys.exc_info())
00120       return
00121 
00122     return

OpenRTMに対してMon Mar 17 15:11:05 2008に生成されました。  doxygen 1.5.4