PortProfileHelper.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*-
00003 
00004 ##
00005 # @file PortProfileHelper.py
00006 # @brief RTCs PortProfile helper class
00007 # @date $Date: 2007-04-26 15:32:25 $
00008 # @author Noriaki Ando <n-ando@aist.go.jp>
00009 #
00010 # Copyright (C) 2006
00011 #     Task-intelligence Research Group,
00012 #     Intelligent Systems Research Institute,
00013 #     National Institute of
00014 #         Advanced Industrial Science and Technology (AIST), Japan
00015 #     All rights reserved.
00016 #
00017 # $Id: PortProfileHelper.py 1135 2009-01-19 16:11:02Z n-ando $
00018 #
00019 #
00020 
00021 import threading
00022 import OpenRTM_aist
00023 import RTC
00024 
00025 
00026 ##
00027 # @if jp
00028 #
00029 # @class PortProfileHelper
00030 # @brief PortProfile ヘルパークラス
00031 #
00032 # RTC::Port の種々のプロファイルを保持する PortProfile を管理するクラス。
00033 # 主として PortBase の内部で使用される。
00034 #
00035 # @else
00036 #
00037 # @class PortProfileHelper
00038 # @brief PortProfile helper class
00039 #
00040 # This class manages the PortProfile that is profiles of the RTC:Port.
00041 # This is mainly used in PortBase class.
00042 #
00043 # @endif
00044 #
00045 class PortProfileHelper:
00046   """
00047   """
00048 
00049   def __init__(self):
00050     self._mutex        = threading.RLock()
00051     self._name         = ""
00052     self._ifProfiles   = []
00053     self._portRef      = None
00054     self._connProfiles = []
00055     self._owner        = None
00056     self._properties   = []
00057     return
00058 
00059   ##
00060   # @if jp
00061   #
00062   # @brief PortProfile を設定する
00063   #
00064   # このオブジェクトが保持する PortProfile を引数で与えられた PortProfile
00065   # をコピーし上書きして保存する。
00066   #
00067   # @param PortProfile 上書きする PortProfile
00068   #
00069   # @else
00070   #
00071   # @brief Set PortProfile
00072   #
00073   # This operation copies the given PortProfile and overwrites the existent
00074   # PortProfile by the given ProtProfile.
00075   #
00076   # @param PortProfile The PortProfile to be stored.
00077   #
00078   # @endif
00079   #
00080   # void setPortProfile(const PortProfile& profile);
00081   def setPortProfile(self, profile):
00082     guard = OpenRTM_aist.ScopedLock(self._mutex)
00083     self._name         = profile.name
00084     self._ifProfiles   = profile.interfaces
00085     self._portRef      = profile.port_ref
00086     self._connProfiles = profile.connector_profiles
00087     self._owner        = profile.owner
00088     self._properties   = profile.properties
00089     return
00090 
00091   ##
00092   # @if jp
00093   #
00094   # @brief PortProfile を取得する
00095   #
00096   # このオブジェクトが保持する PortProfile を返す。
00097   #
00098   # @return このオブジェクトが保持する PortProfile
00099   #
00100   # @else
00101   #
00102   # @brief Get PortProfile
00103   #
00104   # This operation returns the PortProfile.
00105   #
00106   # @return The PortProfile stored by the object.
00107   #
00108   # @endif
00109   #
00110   # PortProfile* getPortProfile();
00111   def getPortProfile(self):
00112     guard = OpenRTM_aist.ScopedLock(self._mutex)
00113     prof = RTC.PortProfile(self._name,
00114                            self._ifProfiles,
00115                            self._portRef,
00116                            self._connProfiles,
00117                            self._owner,
00118                            self._properties)
00119     return prof
00120 
00121 
00122   ##
00123   # @if jp
00124   #
00125   # @brief PortProfile.name を設定する
00126   #
00127   # このオペレーションは引数で与えられた文字列をコポーし、
00128   # PortProfile.name として保持する。
00129   #
00130   # @param name PortProfile.name に格納する Port の名前
00131   #
00132   # @else
00133   #
00134   # @brief Set PortProfile.name
00135   #
00136   # This operation stores a copy of given name to the PortProfile.name.
00137   #
00138   # @param name The name of Port to be stored to the PortProfile.name.
00139   #
00140   # @endif
00141   #
00142   # void setName(const char* name);
00143   def setName(self, name):
00144     guard = OpenRTM_aist.ScopedLock(self._mutex)
00145     self._name = name
00146     return
00147 
00148   ##
00149   # @if jp
00150   #
00151   # @brief PortProfile.name を取得する
00152   #
00153   # このオペレーションは PortProfile.name を取得する。
00154   #
00155   # @return PortProfile.name へのポインタ
00156   #
00157   # @else
00158   #
00159   # @brief Get PortProfile.name
00160   #
00161   # This operation returns a pointer to the PortProfile.name.
00162   #
00163   # @return The pointer to PortProfile.name.
00164   #
00165   # @endif
00166   #
00167   # const char* getName() const;
00168   def getName(self):
00169     guard = OpenRTM_aist.ScopedLock(self._mutex)
00170     return self._name
00171 
00172 
00173   ##
00174   # @if jp
00175   #
00176   # @brief PortInterfaceProfile を追加する
00177   #
00178   # このオペレーションは PortProfile に PortInterfaceProfile を追加する。
00179   #
00180   # @param if_profile PortProfile に追加する PortInterfaceProfile
00181   #
00182   # @else
00183   #
00184   # @brief Append PortInterfaceProfile to the PortProfile
00185   #
00186   # This operation appends the PortInterfaceProfile to the PortProfile
00187   #
00188   # @param if_profile PortInterfaceProfile to be appended the PortProfile
00189   #
00190   # @endif
00191   #
00192   # void appendPortInterfaceProfile(PortInterfaceProfile if_prof);
00193   def appendPortInterfaceProfile(self, if_prof):
00194     guard = OpenRTM_aist.ScopedLock(self._mutex)
00195     self._ifProfiles.append(if_prof)
00196     return
00197 
00198   ##
00199   # @if jp
00200   #
00201   # @brief PortInterfaceProfileList を取得する
00202   #
00203   # このオペレーションは PortInterfaceProfileList を返す。
00204   #
00205   # @return PortInterfaceProfileList
00206   #
00207   # @else
00208   #
00209   # @brief Get PortInterfaceProfileList
00210   #
00211   # This operation returns the PortInterfaceProfileList.
00212   #
00213   # @return PortInterfaceProfileList
00214   #
00215   # @endif
00216   #
00217   # const PortInterfaceProfileList& getPortInterfaceProfiles() const;
00218   def getPortInterfaceProfiles(self):
00219     guard = OpenRTM_aist.ScopedLock(self._mutex)
00220     return self._ifProfiles
00221 
00222 
00223   ##
00224   # @if jp
00225   #
00226   # @brief PortInterfaceProfile を取得する
00227   #
00228   # このオペレーションは instance_name で指定された PortInterfaceProfile
00229   # を返す。
00230   #
00231   # @param instance_name PortInterfaceProfile の instance_name
00232   # @return PortInterfaceProfile
00233   #
00234   # @else
00235   #
00236   # @brief Get PortInterfaceProfile
00237   #
00238   # This operation returns the PortInterfaceProfile specified
00239   # by instance_name.
00240   #
00241   # @param instance_name instance_name of the PortInterfaceProfile
00242   # @return PortInterfaceProfile
00243   #
00244   # @endif
00245   #
00246   # const PortInterfaceProfile getPortInterfaceProfile(const char* instance_name) const;
00247   def getPortInterfaceProfile(self, instance_name):
00248     guard = OpenRTM_aist.ScopedLock(self._mutex)
00249     index = OpenRTM_aist.CORBA_SeqUtil.find(self._ifProfiles,
00250                                             self.if_name(instance_name))
00251     if index < 0:
00252       return None
00253     else:
00254       return self._ifProfiles[index]
00255 
00256 
00257   ##
00258   # @if jp
00259   #
00260   # @brief PortInterfaceProfile を削除する
00261   #
00262   # このオペレーションは instance_name で指定された PortInterfaceProfile
00263   # を削除する。指定した名前の PortInterfaceProfile が存在しない場合には、
00264   # NotFound exception を返す。
00265   #
00266   # @param instance_name 削除する PortInterfaceProfile の名前
00267   #
00268   # @else
00269   #
00270   # @brief Erase PortInterfaceProfile from the PortProfile
00271   #
00272   # This operation erases the PortInterfaceProfile from the PortProfile
00273   #
00274   # @param instance_name PortInterfaceProfile to be erased from the
00275   #        PortProfile
00276   #
00277   # @endif
00278   #
00279   # void erasePortInterfaceProfile(const char* instance_name);
00280   def erasePortInterfaceProfile(self, instance_name):
00281     guard = OpenRTM_aist.ScopedLock(self._mutex)
00282     index = OpenRTM_aist.CORBA_SeqUtil.find(self._ifProfiles,
00283                                             self.if_name(instance_name))
00284     if index < 0:
00285       return
00286     else:
00287       del self._ifProfiles[index]
00288 
00289 
00290   ##
00291   # @if jp
00292   #
00293   # @brief Port のオブジェクト参照をセットする
00294   #
00295   # このオペレーションは PortProfile に、関連する Port のオブジェクト参照
00296   # を設定する。
00297   #
00298   # @param port 設定する Port のオブジェクトリファレンス
00299   #
00300   # @else
00301   #
00302   # @brief Set Port's object reference
00303   #
00304   # This operation set the object reference of the Port.
00305   #
00306   # @param port Port's object reference to be set.
00307   #
00308   # @endif
00309   #
00310   # void setPortRef(PortService_ptr port);
00311   def setPortRef(self, port):
00312     guard = OpenRTM_aist.ScopedLock(self._mutex)
00313     self._portRef = port
00314     return
00315 
00316 
00317   ##
00318   # @if jp
00319   #
00320   # @brief Port のオブジェクト参照を取得する
00321   #
00322   # このオペレーションは PortProfile に関連付けられた Port の
00323   # オブジェクト参照を返す。
00324   #
00325   # @return 関連付けられた Port のオブジェクト参照
00326   #
00327   # @else
00328   #
00329   # @brief Get Port's object reference
00330   #
00331   # This operation returns the object reference of the PortProfile.
00332   #
00333   # @return Port's object reference associated with the PortProfile.
00334   #
00335   # @endif
00336   #
00337   # PortService_ptr getPortRef() const;
00338   def getPortRef(self):
00339     guard = OpenRTM_aist.ScopedLock(self._mutex)
00340     return self._portRef
00341 
00342 
00343   ##
00344   # @if jp
00345   #
00346   # @brief ConnectorProfile を追加する
00347   #
00348   # このオペレーションは PortProfile に ConnectorProfile を追加する。
00349   #
00350   # @param conn_profile ConnectorProfile 
00351   #
00352   # @else
00353   #
00354   # @brief Append ConnectorProfile
00355   #
00356   # This operation appends the ConnectorProfile to the PortProfile.
00357   #
00358   # @param conn_profile ConnectorProfile to be added.
00359   #
00360   # @endif
00361   #
00362   # void appendConnectorProfile(ConnectorProfile conn_profile);
00363   def appendConnectorProfile(self, conn_profile):
00364     guard = OpenRTM_aist.ScopedLock(self._mutex)
00365     self._connProfiles.append(conn_profile)
00366     return
00367 
00368   ##
00369   # @if jp
00370   #
00371   # @brief ConnectorProfileList を取得する
00372   #
00373   # このオペレーションは PortProfile に関連付けられた ConnectorProfile の
00374   # リスト ConnectorProfileList を返す。
00375   #
00376   # @return 関連付けられた ConnectorProfileList
00377   #
00378   # @else
00379   #
00380   # @brief Get ConnectorProfileList
00381   #
00382   # This operation returns the list of ConnectorProfile of the PortProfile.
00383   #
00384   # @return Port's ConnectorProfileList.
00385   #
00386   # @endif
00387   #
00388   # const ConnectorProfileList getConnectorProfiles() const;
00389   def getConnectorProfiles(self):
00390     guard = OpenRTM_aist.ScopedLock(self._mutex)
00391     return self._connProfiles
00392 
00393 
00394   ##
00395   # @if jp
00396   #
00397   # @brief ConnectorProfile を取得する
00398   #
00399   # このオペレーションは引数で指定された名前を持つ ConnectorProfile を返す。
00400   #
00401   # @param name ConnectorProfile の名前
00402   # @return ConnectorProfile
00403   #
00404   # @else
00405   #
00406   # @brief Get ConnectorProfile
00407   #
00408   # This operation returns the ConnectorProfile specified by name.
00409   #
00410   # @param name The name of ConnectorProfile
00411   # @return ConnectorProfile.
00412   #
00413   # @endif
00414   #
00415   # const ConnectorProfile getConnectorProfile(const char* name) const;
00416   def getConnectorProfile(self, name):
00417     guard = OpenRTM_aist.ScopedLock(self._mutex)
00418     index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
00419                                             self.conn_name(name))
00420     if index < 0:
00421       return None
00422     else:
00423       return self._connProfiles[index]
00424 
00425     return None
00426 
00427 
00428   ##
00429   # @if jp
00430   #
00431   # @brief ConnectorProfile を取得する
00432   #
00433   # このオペレーションは引数で指定されたIDを持つ ConnectorProfile を返す。
00434   #
00435   # @param id ConnectorProfile のID
00436   # @return ConnectorProfile
00437   #
00438   # @else
00439   #
00440   # @brief Get ConnectorProfile
00441   #
00442   # This operation returns the ConnectorProfile specified by ID.
00443   #
00444   # @param id The ID of ConnectorProfile
00445   # @return ConnectorProfile.
00446   #
00447   # @endif
00448   #
00449   # const ConnectorProfile getConnectorProfileById(const char* id) const;
00450   def getConnectorProfileById(self, id):
00451     guard = OpenRTM_aist.ScopedLock(self._mutex)
00452     index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
00453                                             self.conn_id(id))
00454     if index < 0:
00455       return None
00456     else:
00457       return self._connProfiles[index]
00458 
00459     return None
00460 
00461   ##
00462   # @if jp
00463   #
00464   # @brief ConnectorProfile を削除する
00465   #
00466   # このオペレーションは PortProfile の ConnectorProfile を
00467   # 名前で指定して削除する。
00468   #
00469   # @param naem ConnectorProfile の名前
00470   #
00471   # @else
00472   #
00473   # @brief Erase ConnectorProfile
00474   #
00475   # This operation erases the ConnectorProfile from the PortProfile.
00476   #
00477   # @param name The name of the ConnectorProfile to be erased.
00478   #
00479   # @endif
00480   #
00481   # void eraseConnectorProfile(const char* name);
00482   def eraseConnectorProfile(self, name):
00483     guard = OpenRTM_aist.ScopedLock(self._mutex)
00484     index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
00485                                             self.conn_name(name))
00486     if index < 0:
00487       return
00488     else:
00489       del self._connProfiles[index]
00490 
00491     return
00492 
00493 
00494   ##
00495   # @if jp
00496   #
00497   # @brief ConnectorProfile を削除する
00498   #
00499   # このオペレーションは PortProfile の ConnectorProfile を
00500   # ID で指定して削除する。
00501   #
00502   # @param id ConnectorProfile のID
00503   #
00504   # @else
00505   #
00506   # @brief Erase ConnectorProfile
00507   #
00508   # This operation erases the ConnectorProfile from the PortProfile.
00509   #
00510   # @param id The ID of the ConnectorProfile to be erased.
00511   #
00512   # @endif
00513   #
00514   # void eraseConnectorProfileById(const char* id);
00515   def eraseConnectorProfileById(self, id):
00516     guard = OpenRTM_aist.ScopedLock(self._mutex)
00517     index = OpenRTM_aist.CORBA_SeqUtil.find(self._connProfiles,
00518                                             self.conn_id(id))
00519     if index < 0:
00520       return
00521     else:
00522       del self._connProfiles[index]
00523 
00524     return
00525 
00526   ##
00527   # @if jp
00528   #
00529   # @brief PortProfile の owner を設定する
00530   #
00531   # このオペレーションは PortProfile の owner を設定する。
00532   #
00533   # @param owner PortProfile の owner のオブジェクト参照
00534   #
00535   # @else
00536   #
00537   # @brief Set owner's object reference to the PortProfile
00538   #
00539   # This operation sets the owner's object reference to the PortProfile.
00540   #
00541   # @param owner The owner's object reference of PortProfile.
00542   #
00543   # @endif
00544   #
00545   # void setOwner(RTObject_ptr owner);
00546   def setOwner(self, owner):
00547     guard = OpenRTM_aist.ScopedLock(self._mutex)
00548     self._owner = owner
00549     return
00550 
00551   ##
00552   # @if jp
00553   #
00554   # @brief PortProfile の owner を取得する
00555   #
00556   # このオペレーションは PortProfile の owner のオブジェクト参照を返す。
00557   #
00558   # @return PortProfile の owner のオブジェクト参照
00559   #
00560   # @else
00561   #
00562   # @brief Get owner's object reference from the PortProfile
00563   #
00564   # This operation returns the owner's object reference of the PortProfile.
00565   #
00566   # @return The owner's object reference of PortProfile.
00567   #
00568   # @endif
00569   #
00570   # RTObject_ptr getOwner() const;
00571   def getOwner(self):
00572     guard = OpenRTM_aist.ScopedLock(self._mutex)
00573     return self._owner
00574 
00575 
00576   ##
00577   # @if jp
00578   #
00579   # @brief PortProfile の properties を設定する
00580   #
00581   # このオペレーションは PortProfile に properties を設定する。
00582   #
00583   # @param prop PortProfile の properties の NVList
00584   #
00585   # @else
00586   #
00587   # @brief Set properties to the PortProfile
00588   #
00589   # This operation set the properties to the PortProfile.
00590   #
00591   # @param prop The NVList of PortProfile's properties.
00592   #
00593   # @endif
00594   #
00595   # void setProperties(NVList& prop);
00596   def setProperties(self, prop):
00597     guard = OpenRTM_aist.ScopedLock(self._mutex)
00598     self._properties = prop
00599     return
00600 
00601   ##
00602   # @if jp
00603   #
00604   # @brief PortProfile の properties を取得する
00605   #
00606   # このオペレーションは PortProfile の propertiesを返す。
00607   #
00608   # @return PortProfile の properties の NVList
00609   #
00610   # @else
00611   #
00612   # @brief Get properties of the PortProfile
00613   #
00614   # This operation returns the properties of the PortProfile.
00615   #
00616   # @return The NVList of PortProfile's properties.
00617   #
00618   # @endif
00619   #
00620   # const NVList& getProperties() const;
00621   def getProperties(self):
00622     guard = OpenRTM_aist.ScopedLock(self._mutex)
00623     return self._properties
00624 
00625 
00626   ##
00627   # @if jp
00628   # @class if_name
00629   # @brief instance_name を持つ PortInterfaceProfile を探す Functor
00630   # @else
00631   # @brief A functor to find a PortInterfaceProfile named instance_name
00632   # @endif
00633   class if_name:
00634     def __init__(self, name):
00635       self._name = name
00636       return
00637 
00638     def __call__(self, prof):
00639       return str(self._name) == str(prof.instance_name)
00640 
00641 
00642   # Functor to find ConnectorProfile by name
00643   class conn_name:
00644     def __init__(self, name):
00645       self._name = name
00646       return
00647 
00648     def __call__(self, cprof):
00649       return str(self._name) == str(cprof.name)
00650 
00651     
00652   # Functor to find ConnectorProfile by id
00653   class conn_id:
00654     def __init__(self, id_):
00655       self._id = id_
00656       return
00657 
00658     def __call__(self, cprof):
00659       return str(self._id) == str(cprof.connector_id)


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