CorbaConsumer.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*-
00003 
00004 
00005 ##
00006 #
00007 # @file CorbaConsumer.py
00008 # @brief CORBA Consumer class
00009 # @date $Date: 2007/09/20 $
00010 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara
00011 # 
00012 # Copyright (C) 2006-2008
00013 #     Noriaki Ando
00014 #     Task-intelligence Research Group,
00015 #     Intelligent Systems Research Institute,
00016 #     National Institute of
00017 #         Advanced Industrial Science and Technology (AIST), Japan
00018 #     All rights reserved.
00019 
00020 
00021 from omniORB import CORBA
00022 
00023 ##
00024 # @if jp
00025 # @class CorbaConsumerBase
00026 #
00027 # @brief オブジェクトリファレンスを保持するプレースホルダ基底クラス
00028 #
00029 # 通信手段として CORBA を選択した場合のコンシューマ実装のための基底クラス
00030 #
00031 # @since 0.4.0
00032 #
00033 # @else
00034 # @class ConsumerBase
00035 # @brief Placeholder base class to hold remote object reference.
00036 # @endif
00037 class CorbaConsumerBase:
00038   """
00039   """
00040 
00041 
00042 
00043   ##
00044   # @if jp
00045   #
00046   # @brief コンストラクタ
00047   # 
00048   # @param self 
00049   # @param consumer コピー元のCorbaConsumerBaseオブジェクト
00050   #
00051   # @else
00052   #
00053   # @brief Consructor
00054   #
00055   # @param self 
00056   #
00057   # @endif
00058   def __init__(self, consumer=None):
00059     if consumer:
00060       self._objref = consumer._objref
00061     else:
00062       self._objref = None
00063 
00064 
00065   ##
00066   # @if jp
00067   # 
00068   # @brief 代入演算子
00069   # 
00070   # @param self 
00071   # @param consumer 代入元
00072   # 
00073   # @return 代入結果
00074   # 
00075   # @else
00076   # 
00077   # @brief Assignment operator
00078   # 
00079   # @param self 
00080   # @param consumer Copy source.
00081   # 
00082   # @endif
00083   def equal(self, consumer):
00084     self._objref = consumer._objref
00085     return self
00086 
00087 
00088   ##
00089   # @if jp
00090   #
00091   # @brief CORBAオブジェクトをセットする
00092   #
00093   # 与えられたオブジェクトリファレンスは、ConsumerBase オブジェクト内に
00094   # CORBA::Object_var 型として保持される。 
00095   #
00096   # @param self
00097   # @param obj CORBA オブジェクトのリファレンス
00098   #
00099   # @return obj が nil リファレンスの場合 false を返す。
00100   #
00101   # @else
00102   #
00103   # @brief Set CORBA Object
00104   #
00105   # The given CORBA Object is held as CORBA::Object_var type
00106   #
00107   # @param self
00108   # @param obj Object reference of CORBA object
00109   #
00110   # @return If obj is nil reference, it returns false.
00111   #
00112   # @endif
00113   def setObject(self, obj):
00114     if CORBA.is_nil(obj):
00115       return False
00116 
00117     self._objref = obj
00118     return True
00119 
00120 
00121   ##
00122   # @if jp
00123   #
00124   # @brief CORBAオブジェクトを取得する
00125   #
00126   # ConsumerBase オブジェクト内に CORBA::Object_var 型として保持されている
00127   # オブジェクトリファレンスを取得する。 
00128   #
00129   # @param self
00130   #
00131   # @return obj CORBA オブジェクトのリファレンス
00132   #
00133   # @else
00134   #
00135   # @brief Get CORBA Object
00136   #
00137   # @param self
00138   #
00139   # @return Object reference of CORBA object
00140   #
00141   # @endif
00142   def getObject(self):
00143     return self._objref
00144 
00145 
00146   ##
00147   # @if jp
00148   #
00149   # @brief CORBAオブジェクトの設定をクリアする
00150   #
00151   # 設定されている CORBA オブジェクトをクリアする。
00152   # CORBAオブジェクトそのものに対しては何も操作しない。
00153   #
00154   # @param self
00155   #
00156   # @else
00157   #
00158   # @endif
00159   def releaseObject(self):
00160     self._objref = CORBA.Object._nil
00161 
00162 
00163 
00164 ##
00165 # @if jp
00166 #
00167 # @class CorbaConsumer
00168 # @brief オブジェクトリファレンスを保持するプレースホルダクラス
00169 # 
00170 # 引数で与えられた型のCORBAオブジェクトを保持する。
00171 # オブジェクトがセットされたときに、与えられた型で narrow されるので、
00172 # _ptr() で取得するリファレンスは、narrow 済みのリファレンスである。
00173 #
00174 # @since 0.4.0
00175 #
00176 # @else
00177 #
00178 # @class Consumer.CorbaConsumer
00179 # @brief Placeholder class to hold remote object reference.
00180 #
00181 # This class holds a type of object that given by parameter.
00182 # For internal use, _ptr type and _var type should be given as parameter.
00183 #
00184 # @since 0.4.0
00185 #
00186 # @endif
00187 class CorbaConsumer(CorbaConsumerBase):
00188   """
00189   """
00190 
00191 
00192 
00193   ##
00194   # @if jp
00195   #
00196   # @brief コンストラクタ
00197   #
00198   # @param self
00199   # @param interfaceType このホルダが保持するオブジェクトの型
00200   #                      (デフォルト値;None)
00201   # @param consumer このホルダが保持するオブジェクト(デフォルト値;None)
00202   #
00203   # @else
00204   #
00205   # @brief Consructor
00206   #
00207   # @endif
00208   def __init__(self, interfaceType=None, consumer=None):
00209     if interfaceType:
00210       self._interfaceType = interfaceType
00211     else:
00212       self._interfaceType = None
00213 
00214     if consumer:
00215       CorbaConsumerBase.__init__(self, consumer)
00216       self._var = consumer._var
00217     else:
00218       CorbaConsumerBase.__init__(self)
00219       self._var = None
00220 
00221 
00222   ##
00223   # @if jp
00224   # 
00225   # @brief 代入演算子
00226   # 
00227   # @param self 
00228   # @param consumer 代入元
00229   # 
00230   # @return 代入結果
00231   # 
00232   # @else
00233   # 
00234   # @brief Assignment operator
00235   # 
00236   # @param self 
00237   # @param consumer Copy source.
00238   # 
00239   # @endif
00240   def equal(self, consumer):
00241     self._var = consumer._var
00242 
00243 
00244   def __del__(self):
00245     self.releaseObject()
00246 
00247 
00248   ##
00249   # @if jp
00250   # @brief オブジェクトをセットする
00251   #
00252   # ConsumerBase のオーバーライド。CORBA::Object_var にオブジェクトをセット
00253   # するとともに、パラメータの型で narrow したオブジェクトを保持する。
00254   #
00255   # @param self
00256   # @param obj CORBA Objecct
00257   #
00258   # @return オブジェクト設定結果
00259   #         設定対象オブジェクトが null の場合は false が返ってくる
00260   # 
00261   # @else
00262   # @brief Set Object
00263   #
00264   # Override function of ConsumerBase. This operation set an Object to 
00265   # CORBA:Object_var in the class, and this object is narrowed to
00266   # given parameter and stored in.
00267   #
00268   # @param self
00269   # @param obj CORBA Objecct
00270   #
00271   # @endif
00272   def setObject(self, obj):
00273     if not CorbaConsumerBase.setObject(self, obj):
00274       self.releaseObject()
00275       return False
00276 
00277     if self._interfaceType:
00278       self._var = obj._narrow(self._interfaceType)
00279     else:
00280       self._var = self._objref
00281 
00282     if not CORBA.is_nil(self._var):
00283       return True
00284 
00285     self.releaseObject()
00286     return False
00287 
00288 
00289   ##
00290   # @if jp
00291   # @brief ObjectType 型のオブジェクトのリファレンスを取得
00292   #
00293   # ObjectType に narrow済みのオブジェクトのリファレンスを取得する。
00294   # オブジェクトリファレンスを使用するには、setObject() でセット済みで
00295   # なければならない。
00296   # オブジェクトがセットされていなければ nil オブジェクトリファレンスが
00297   # 返される。
00298   #
00299   # @param self
00300   #
00301   # @return ObjectType に narrow 済みのオブジェクトのリファレンス
00302   # 
00303   # @else
00304   # @brief Get Object reference narrowed as ObjectType
00305   #
00306   # This operation returns object reference narrowed as ObjectType.
00307   # To use the returned object reference, reference have to be set by
00308   # setObject().
00309   # If object is not set, this operation returns nil object reference.
00310   #
00311   # @return The object reference narrowed as ObjectType
00312   #
00313   # @endif
00314   def _ptr(self):
00315     return self._var
00316 
00317 
00318   ##
00319   # @if jp
00320   #
00321   # @brief CORBAオブジェクトの設定をクリアする
00322   #
00323   # 設定されている CORBA オブジェクトをクリアする。
00324   # CORBAオブジェクトそのものに対しては何も操作しない。
00325   #
00326   # @param self
00327   #
00328   # @else
00329   #
00330   # @endif
00331   def releaseObject(self):
00332     CorbaConsumerBase.releaseObject(self)
00333     self._var = CORBA.Object._nil


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