OutPortProvider.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*-
00003 
00004 ##
00005 # @file  OutPortProvider.py
00006 # @brief OutPortProvider class
00007 # @date  $Date: 2007/09/05$
00008 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara
00009 #
00010 # Copyright (C) 2006-2008
00011 #     Noriaki Ando
00012 #     Task-intelligence Research Group,
00013 #     Intelligent Systems Research Institute,
00014 #     National Institute of
00015 #         Advanced Industrial Science and Technology (AIST), Japan
00016 #     All rights reserved.
00017 
00018 
00019 
00020 import OpenRTM_aist
00021 
00022 ##
00023 # @if jp
00024 #
00025 # @class OutPortProvider
00026 # @brief OutPortProvider
00027 #
00028 # - Port に対して何を提供しているかを宣言する。
00029 #   PortProfile の properties に Provider に関する情報を追加する。
00030 #
00031 # (例) OutPort を Provide する場合
00032 #
00033 # OutPortCorbaProvider が以下を宣言
00034 #  - dataport.interface_type = CORBA_Any
00035 #  - dataport.dataflow_type = Push, Pull
00036 #  - dataport.subscription_type = Once, New, Periodic
00037 # 
00038 # @since 0.4.0
00039 #
00040 # @else
00041 #
00042 #
00043 # @endif
00044 class OutPortProvider(OpenRTM_aist.DataPortStatus):
00045   """
00046   """
00047 
00048 
00049 
00050   ##
00051   # @if jp
00052   # @brief インターフェースプロファイルを公開するたのファンクタ
00053   # @else
00054   # @brief Functor to publish interface profile
00055   # @endif
00056   #
00057   class publishInterfaceProfileFunc:
00058     def __init__(self, prop):
00059       self._prop = prop
00060 
00061     def __call__(self, provider):
00062       provider.publishInterfaceProfile(self._prop)
00063 
00064 
00065   ##
00066   # @if jp
00067   # @brief コンストラクタ
00068   #
00069   # コンストラクタ
00070   #
00071   # @param self
00072   #
00073   # @else
00074   # @brief Constructor
00075   # @endif
00076   def __init__(self):
00077     self._properties = []
00078     self._portType         = ""
00079     self._dataType         = ""
00080     self._interfaceType    = ""
00081     self._dataflowType     = ""
00082     self._subscriptionType = ""
00083     self._rtcout = OpenRTM_aist.Manager.instance().getLogbuf("OutPortProvider")
00084 
00085 
00086   ##
00087   # @if jp
00088   # @brief InterfaceProfile情報を公開する
00089   #
00090   # InterfaceProfile情報を公開する。
00091   # 引数で指定するプロパティ情報内の NameValue オブジェクトの
00092   # dataport.interface_type 値を調べ、当該ポートに設定されている
00093   # インターフェースタイプと一致する場合のみ情報を取得する。
00094   #
00095   # @param self
00096   # @param prop InterfaceProfile情報を受け取るプロパティ
00097   #
00098   # @else
00099   #
00100   # @endif
00101   # virtual void publishInterfaceProfile(SDOPackage::NVList& properties);
00102   def publishInterfaceProfile(self, prop):
00103     OpenRTM_aist.NVUtil.appendStringValue(prop, "dataport.interface_type", self._interfaceType)
00104     OpenRTM_aist.NVUtil.append(prop, self._properties)
00105 
00106   ##
00107   # @if jp
00108   # @brief Interface情報を公開する
00109   #
00110   # Interface情報を公開する。
00111   # 引数で指定するプロパティ情報内の NameValue オブジェクトの
00112   # dataport.interface_type 値を調べ、当該ポートに設定されていなければ
00113   # NameValue に情報を追加する。
00114   # すでに同一インターフェースが登録済みの場合は何も行わない。
00115   #
00116   # @param self
00117   # @param prop InterfaceProfile情報を受け取るプロパティ
00118   #
00119   # @else
00120   #
00121   # @endif
00122   # virtual bool publishInterface(SDOPackage::NVList& properties);
00123   def publishInterface(self, prop):
00124     if not OpenRTM_aist.NVUtil.isStringValue(prop,"dataport.interface_type",self._interfaceType):
00125       return False
00126 
00127     OpenRTM_aist.NVUtil.append(prop,self._properties)
00128     return True
00129 
00130 
00131   ##
00132   # @if jp
00133   # @brief ポートタイプを設定する
00134   #
00135   # 引数で指定したポートタイプを設定する。
00136   #
00137   # @param self
00138   # @param port_type 設定対象ポートタイプ
00139   #
00140   # @else
00141   #
00142   # @endif
00143   def setPortType(self, port_type):
00144     self._portType = port_type
00145 
00146 
00147   ##
00148   # @if jp
00149   # @brief データタイプを設定する
00150   #
00151   # 引数で指定したデータタイプを設定する。
00152   #
00153   # @param self
00154   # @param data_type 設定対象データタイプ
00155   #
00156   # @else
00157   #
00158   # @endif
00159   def setDataType(self, data_type):
00160     self._dataType = data_type
00161 
00162 
00163   ##
00164   # @if jp
00165   # @brief インターフェースタイプを設定する
00166   #
00167   # 引数で指定したインターフェースタイプを設定する。
00168   #
00169   # @param self
00170   # @param interface_type 設定対象インターフェースタイプ
00171   #
00172   # @else
00173   #
00174   # @endif
00175   def setInterfaceType(self, interface_type):
00176     self._interfaceType = interface_type
00177 
00178 
00179   ##
00180   # @if jp
00181   # @brief データフロータイプを設定する
00182   #
00183   # 引数で指定したデータフロータイプを設定する。
00184   #
00185   # @param self
00186   # @param dataflow_type 設定対象データフロータイプ
00187   #
00188   # @else
00189   #
00190   # @endif
00191   def setDataFlowType(self, dataflow_type):
00192     self._dataflowType = dataflow_type
00193 
00194 
00195   ##
00196   # @if jp
00197   # @brief サブスクリプションタイプを設定する
00198   #
00199   # 引数で指定したサブスクリプションタイプを設定する。
00200   #
00201   # @param self
00202   # @param subs_type 設定対象サブスクリプションタイプ
00203   #
00204   # @else
00205   #
00206   # @endif
00207   def setSubscriptionType(self, subs_type):
00208     self._subscriptionType = subs_type
00209 
00210 
00211 
00212 outportproviderfactory = None
00213 
00214 class OutPortProviderFactory(OpenRTM_aist.Factory,OutPortProvider):
00215   def __init__(self):
00216     OpenRTM_aist.Factory.__init__(self)
00217     pass
00218 
00219 
00220   def __del__(self):
00221     pass
00222 
00223 
00224   def instance():
00225     global outportproviderfactory
00226     
00227     if outportproviderfactory is None:
00228       outportproviderfactory = OutPortProviderFactory()
00229       
00230     return outportproviderfactory
00231 
00232   instance = staticmethod(instance)


openrtm_aist_python
Author(s): Shinji Kurihara
autogenerated on Thu Aug 27 2015 14:17:28