OutPortCorbaProvider.py

00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*-
00003 
00004 #
00005 #  \file  OutPortCorbaProvider.py
00006 #  \brief OutPortCorbaProvider class
00007 #  \date  $Date: 2007/09/26 $
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 from omniORB import any
00020 
00021 import OpenRTM
00022 import RTC, RTC__POA
00023 
00024 
00025 
00026 ##
00027 # @if jp
00028 # @class OutPortCorbaProvider
00029 # @brief OutPortCorbaProvider クラス
00030 #
00031 # 通信手段に CORBA を利用した出力ポートプロバイダーの実装クラス。
00032 #
00033 # @since 0.4.0
00034 #
00035 # @else
00036 # @class OutPortCorbaProvider
00037 # @brief OutPortCorbaProvider class
00038 # @endif
00039 class OutPortCorbaProvider(OpenRTM.OutPortProvider, RTC__POA.OutPortAny):
00040   """
00041   """
00042 
00043 
00044 
00045   ##
00046   # @if jp
00047   # @brief コンストラクタ
00048   #
00049   # コンストラクタ
00050   #
00051   # @param self
00052   # @param buffer_ 当該プロバイダに割り当てるバッファオブジェクト
00053   #
00054   # @else
00055   # @brief Constructor
00056   # @endif
00057   def __init__(self, buffer_):
00058     OpenRTM.OutPortProvider.__init__(self)
00059     self._buffer = buffer_
00060 
00061     # PortProfile setting
00062     self.setDataType(self._buffer.getPortDataType())
00063     self.setInterfaceType("CORBA_Any")
00064     self.setDataFlowType("Push, Pull")
00065     self.setSubscriptionType("Flush, New, Periodic")
00066 
00067     # ConnectorProfile setting
00068     self._objref = self._this()
00069     OpenRTM.CORBA_SeqUtil.push_back(self._properties,
00070                     OpenRTM.NVUtil.newNV("dataport.corba_any.outport_ref",
00071                                self._objref))
00072 
00073 
00074   ##
00075   # @if jp
00076   # @brief バッファからデータを取得する
00077   #
00078   # 設定された内部バッファからデータを取得する。
00079   #
00080   # @param self
00081   #
00082   # @return 取得データ
00083   #
00084   # @else
00085   #
00086   # @endif
00087   def get(self):
00088     data = [None]
00089     self._buffer.read(data)
00090     try:
00091       retval = any.to_any(data[0])
00092     except:
00093       return None
00094 
00095     return retval

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