SdoOrganization.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*-
00003 
00004 ##
00005 # @file SdoOrganization.py
00006 # @brief SDO Organization implementation class
00007 # @date $Date: 2007/09/12 $
00008 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara
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 import sys
00018 import omniORB.any
00019 from omniORB import CORBA
00020 import threading
00021 
00022 import OpenRTM_aist
00023 import SDOPackage, SDOPackage__POA
00024 
00025 
00026 ##
00027 # @if jp
00028 # 
00029 # @class Organization_impl
00030 # @brief SDO Organization 実装クラス
00031 # 
00032 # Organization interface は Resource Data Model で定義されたデータの
00033 # 追加、削除等の操作を行うためのインターフェースである。
00034 # 
00035 # @since 0.4.0
00036 # 
00037 # @else
00038 # 
00039 # @class Organization_impl
00040 # @brief Organization implementation class
00041 # 
00042 # The Organization interface is used to manage the Organization attribute.
00043 # 
00044 # @since 0.4.0
00045 # 
00046 # @endif
00047 class Organization_impl(SDOPackage__POA.Organization):
00048   """
00049   """
00050 
00051   ##
00052   # @if jp
00053   # 
00054   # @brief コンストラクタ
00055   # 
00056   # コンストラクタ
00057   # 
00058   # @else
00059   # 
00060   # @endif
00061   def __init__(self, sdo):
00062     self._pId         = str(OpenRTM_aist.uuid1())
00063     self._org_mutex   = threading.RLock()
00064 
00065     self._orgProperty = SDOPackage.OrganizationProperty([])
00066     self._varOwner    = sdo
00067     self._memberList  = []
00068     self._dependency  = SDOPackage.OWN
00069     self._objref      = self._this()
00070     self.__rtcout = OpenRTM_aist.Manager.instance().getLogbuf("rtobject.sdo_organization")
00071 
00072 
00073   #============================================================
00074   #
00075   # <<< CORBA interfaces >>>
00076   #
00077   #============================================================
00078   ##
00079   # @if jp
00080   # 
00081   # @brief [CORBA interface] Organization ID を取得する
00082   # 
00083   # Organization の ID を返すオペレーション。
00084   #
00085   # @param self
00086   # 
00087   # @return Resource Data Model で定義された Organization ID。
00088   # 
00089   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00090   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00091   # @exception NotAvailable SDOは存在するが応答がない。
00092   # @exception InternalError 内部的エラーが発生した。
00093   # @else
00094   # 
00095   # @brief [CORBA interface] Get Organization Id
00096   # 
00097   # This operation returns the 'id' of the Organization.
00098   #
00099   # @param self
00100   # 
00101   # @return The id of the Organization defined in the resource data model.
00102   # 
00103   # @exception SDONotExists if the target SDO does not exist.(This exception 
00104   #                         is mapped to CORBA standard system exception
00105   #                         OBJECT_NOT_EXIST.)
00106   # @exception NotAvailable The target SDO is reachable but cannot respond.
00107   # @exception InternalError The target SDO cannot execute the operation
00108   #                          completely due to some internal error.
00109   # @endif
00110   def get_organization_id(self):
00111     self.__rtcout.RTC_TRACE("get_organization_id() = %s", self._pId)
00112     return self._pId
00113 
00114 
00115   ##
00116   # @if jp
00117   # 
00118   # @brief [CORBA interface] OrganizationProperty の取得
00119   # 
00120   # Organization が所有する OrganizationProperty を返すオペレーション。
00121   # Organization がプロパティを持たなければ空のリストを返す。
00122   # 
00123   # @param self
00124   # 
00125   # @return Organization のプロパティのリスト。
00126   # 
00127   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00128   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00129   # @exception NotAvailable SDOは存在するが応答がない。
00130   # @exception InternalError 内部的エラーが発生した。
00131   # @else
00132   # 
00133   # @brief [CORBA interface] Get OrganizationProperty
00134   # 
00135   # This operation returns the OrganizationProperty that an Organization
00136   # has. An empty OrganizationProperty is returned if the Organization does
00137   # not have any properties.
00138   # 
00139   # @param self
00140   # 
00141   # @return The list with properties of the organization.
00142   # 
00143   # @exception SDONotExists if the target SDO does not exist.(This exception 
00144   #                         is mapped to CORBA standard system exception
00145   #                         OBJECT_NOT_EXIST.)
00146   # @exception NotAvailable The target SDO is reachable but cannot respond.
00147   # @exception InternalError The target SDO cannot execute the operation
00148   #                          completely due to some internal error.
00149   # @endif
00150   def get_organization_property(self):
00151     self.__rtcout.RTC_TRACE("get_organization_property()")
00152     guard = OpenRTM_aist.ScopedLock(self._org_mutex)
00153     prop = SDOPackage.OrganizationProperty(self._orgProperty.properties)
00154     return prop
00155 
00156 
00157   ##
00158   # @if jp
00159   # 
00160   # @brief [CORBA interface] OrganizationProperty の特定の値の取得
00161   # 
00162   # OrganizationProperty の指定された値を返すオペレーション。
00163   # 引数 "name" で指定されたプロパティの値を返す。
00164   # 
00165   # @param self
00166   # @param name 値を返すプロパティの名前。
00167   # 
00168   # @return 引数 "name" で指定されたプロパティの値。
00169   # 
00170   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00171   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00172   # @exception InvalidParameter 引数 "namne" で指定されたプロパティが
00173   #            存在しない。
00174   # @exception NotAvailable SDOは存在するが応答がない。
00175   # @exception InternalError 内部的エラーが発生した。
00176   # @else
00177   # 
00178   # @brief [CORBA interface] Get specified value of OrganizationProperty
00179   # 
00180   # This operation returns a value in the OrganizationProperty.
00181   # The value to be returned is specified by argument "name."
00182   # 
00183   # @param self
00184   # @param name The name of the value to be returned.
00185   # 
00186   # @return The value of property which is specified by argument "name".
00187   # 
00188   # @exception SDONotExists if the target SDO does not exist.(This exception 
00189   #                         is mapped to CORBA standard system exception
00190   #                         OBJECT_NOT_EXIST.)
00191   # @exception InvalidParameter If there are no Property stored with argument
00192   #                             "name".
00193   # @exception NotAvailable The target SDO is reachable but cannot respond.
00194   # @exception InternalError The target SDO cannot execute the operation
00195   #                          completely due to some internal error.
00196   # @endif
00197   def get_organization_property_value(self, name):
00198     self.__rtcout.RTC_TRACE("get_organization_property_value(%s)", name)
00199     if not name:
00200       raise SDOPackage.InvalidParameter("Empty name.")
00201 
00202     index = OpenRTM_aist.CORBA_SeqUtil.find(self._orgProperty.properties, self.nv_name(name))
00203 
00204     if index < 0:
00205       raise SDOPackage.InvalidParameter("Not found.")
00206 
00207     try:
00208       value = omniORB.any.to_any(self._orgProperty.properties[index].value)
00209       return value
00210     except:
00211       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00212       raise SDOPackage.InternalError("get_organization_property_value()")
00213 
00214     # never reach here
00215     return None
00216 
00217 
00218   ##
00219   # @if jp
00220   # 
00221   # @brief [CORBA interface] OrganizationProperty のセット
00222   # 
00223   # ※ SDO Specification の PIM 記述とオペレーション名が異なる。
00224   # ※ addOrganizationProperty に対応か?<BR>
00225   # OrganizationProperty を Organization に追加するオペレーション。
00226   # OrganizationProperty は Organization のプロパティ記述である。
00227   # 
00228   # @param self
00229   # @param org_property セットする OrganizationProperty
00230   # 
00231   # @return オペレーションが成功したかどうかを返す。
00232   # 
00233   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00234   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00235   # @exception InvalidParameter "org_property" が null。
00236   # @exception NotAvailable SDOは存在するが応答がない。
00237   # @exception InternalError 内部的エラーが発生した。
00238   # @else
00239   # 
00240   # @brief [CORBA interface] Set OrganizationProperty
00241   # 
00242   # This operation adds the OrganizationProperty to an Organization. The
00243   # OrganizationProperty is the property description of an Organization.
00244   # 
00245   # @param self
00246   # @param org_property The type of organization to be added.
00247   # 
00248   # @return If the operation was successfully completed.
00249   # 
00250   # @exception SDONotExists if the target SDO does not exist.(This exception 
00251   #                         is mapped to CORBA standard system exception
00252   #                         OBJECT_NOT_EXIST.)
00253   # @exception InvalidParameter The argument "organizationProperty" is null.
00254   # @exception NotAvailable The target SDO is reachable but cannot respond.
00255   # @exception InternalError The target SDO cannot execute the operation
00256   #                          completely due to some internal error.
00257   # @endif
00258   def add_organization_property(self, org_property):
00259     self.__rtcout.RTC_TRACE("add_organization_property()")
00260     if org_property is None:
00261       raise SDOPackage.InvalidParameter("org_property is Empty.")
00262 
00263     try:
00264       guard = OpenRTM_aist.ScopedLock(self._org_mutex)
00265       self._orgProperty = org_property
00266       return True
00267     except:
00268       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00269       raise SDOPackage.InternalError("add_organization_property()")
00270 
00271     return False
00272 
00273 
00274   ##
00275   # @if jp
00276   # 
00277   # @brief [CORBA interface] OrganizationProperty の値のセット
00278   # 
00279   # OrganizationProperty の NVList に name と value のセットを追加もしくは
00280   # 更新するオペレーション。name と value は引数 "name" と "value" により
00281   # 指定する。
00282   # 
00283   # @param self
00284   # @param name 追加・更新されるプロパティの名前。
00285   # @param value 追加・更新されるプロパティの値。
00286   # 
00287   # @return オペレーションが成功したかどうかを返す。
00288   # 
00289   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00290   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00291   # @exception InvalidParameter 引数 "name" で指定されたプロパティは
00292   #            存在しない。
00293   # @exception NotAvailable SDOは存在するが応答がない。
00294   # @exception InternalError 内部的エラーが発生した。
00295   # @else
00296   # 
00297   # @brief [CORBA interface] Set specified value of OrganizationProperty
00298   # 
00299   # This operation adds or updates a pair of name and value as a property
00300   # of Organization to/in NVList of the OrganizationProperty. The name and
00301   # the value to be added/updated are specified by argument "name" and
00302   # "value."
00303   # 
00304   # @param self
00305   # @param name The name of the property to be added/updated.
00306   # @param value The value of the property to be added/updated.
00307   # 
00308   # @return If the operation was successfully completed.
00309   # 
00310   # @exception SDONotExists if the target SDO does not exist.(This exception 
00311   #                         is mapped to CORBA standard system exception
00312   #                         OBJECT_NOT_EXIST.)
00313   # @exception NotAvailable The target SDO is reachable but cannot respond.
00314   # @exception InvalidParameter The property that is specified by argument
00315   #            "name" does not exist.
00316   # @exception InternalError The target SDO cannot execute the operation
00317   #                          completely due to some internal error.
00318   # @endif
00319   def set_organization_property_value(self, name, value):
00320     self.__rtcout.RTC_TRACE("set_organization_property_value(name=%s)", name)
00321     if not name:
00322       raise SDOPackage.InvalidParameter("set_organization_property_value(): Enpty name.")
00323 
00324     index = OpenRTM_aist.CORBA_SeqUtil.find(self._orgProperty.properties, self.nv_name(name))
00325 
00326     if index < 0:
00327       nv = SDOPackage.NameValue(name, value)
00328       OpenRTM_aist.CORBA_SeqUtil.push_back(self._orgProperty.properties, nv)
00329     else:
00330       self._orgProperty.properties[index].value = value
00331 
00332     return True
00333 
00334 
00335   ##
00336   # @if jp
00337   # 
00338   # @brief [CORBA interface] OrganizationProperty の削除
00339   # 
00340   # OrganizationProperty の NVList から特定のプロパティを削除する。
00341   # 削除されるプロパティの名前は引数 "name" により指定される。
00342   # 
00343   # @param self
00344   # @param name 削除するプロパティの名前。
00345   # 
00346   # @return オペレーションが成功したかどうかを返す。
00347   # 
00348   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00349   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00350   # @exception InvalidParameter 引数 "name" で指定されたプロパティは
00351   #            存在しない。
00352   # @exception NotAvailable SDOは存在するが応答がない。
00353   # @exception InternalError 内部的エラーが発生した。
00354   # @else
00355   # 
00356   # @brief [CORBA interface] Remove specified OrganizationProperty
00357   # 
00358   # This operation removes a property of Organization from NVList of the
00359   # OrganizationProperty. The property to be removed is specified by
00360   # argument "name."
00361   # 
00362   # @param self
00363   # @param name The name of the property to be removed.
00364   # 
00365   # @return If the operation was successfully completed.
00366   # 
00367   # @exception SDONotExists if the target SDO does not exist.(This exception 
00368   #                         is mapped to CORBA standard system exception
00369   #                         OBJECT_NOT_EXIST.)
00370   # @exception NotAvailable The target SDO is reachable but cannot respond.
00371   # @exception InvalidParameter The property that is specified by argument
00372   #            "name" does not exist.
00373   # @exception InternalError The target SDO cannot execute the operation
00374   #                          completely due to some internal error.
00375   # @endif
00376   def remove_organization_property(self, name):
00377     self.__rtcout.RTC_TRACE("remove_organization_property(%s)", name)
00378     if not name:
00379       raise SDOPackage.InvalidParameter("remove_organization_property_value(): Enpty name.")
00380 
00381     index = OpenRTM_aist.CORBA_SeqUtil.find(self._orgProperty.properties, self.nv_name(name))
00382 
00383     if index < 0:
00384       raise SDOPackage.InvalidParameter("remove_organization_property_value(): Not found.")
00385 
00386     try:
00387       OpenRTM_aist.CORBA_SeqUtil.erase(self._orgProperty.properties, index)
00388       return True
00389     except:
00390       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00391       raise SDOPackage.InternalError("remove_organization_property_value()")
00392 
00393     return False
00394 
00395 
00396   ##
00397   # @if jp
00398   # 
00399   # @brief [CORBA interface] Organization のオーナーを取得する
00400   # 
00401   # この Organization のオーナーへの参照を返す。
00402   # 
00403   # @param self
00404   # 
00405   # @return オーナーオブジェクトへの参照。
00406   # 
00407   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00408   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00409   # @exception NotAvailable SDOは存在するが応答がない。
00410   # @exception InternalError 内部的エラーが発生した。
00411   # @else
00412   # 
00413   # @brief [CORBA interface] Get the owner of the SDO
00414   # 
00415   # This operation returns the SDOSystemElement that is owner of
00416   # the Organization.
00417   # 
00418   # @param self
00419   # 
00420   # @return Reference of owner object.
00421   # 
00422   # @exception SDONotExists if the target SDO does not exist.(This exception 
00423   #                         is mapped to CORBA standard system exception
00424   #                         OBJECT_NOT_EXIST.)
00425   # @exception NotAvailable The target SDO is reachable but cannot respond.
00426   # @exception InternalError The target SDO cannot execute the operation
00427   #                          completely due to some internal error.
00428   # @endif
00429   def get_owner(self):
00430     self.__rtcout.RTC_TRACE("get_owner()")
00431     return self._varOwner
00432 
00433 
00434   ##
00435   # @if jp
00436   # 
00437   # @brief [CORBA interface] Organization にオーナーをセットする
00438   # 
00439   # Organization に対して SDOSystemElement をオーナーとしてセットする。
00440   # 引数 "sdo" にセットする SDOSystemElement を指定する。
00441   # 
00442   # @param self
00443   # @param sdo オーナーオブジェクトの参照。
00444   # 
00445   # @return オペレーションが成功したかどうかを返す。
00446   # 
00447   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00448   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00449   # @exception InvalidParameter 引数 "sdo" が nullである、もしくは、
00450   #                             "sdo" が存在しない。
00451   # @exception NotAvailable SDOは存在するが応答がない。
00452   # @exception InternalError 内部的エラーが発生した。
00453   # @else
00454   # 
00455   # @brief [CORBA interface] Set the orner of the Organization
00456   # 
00457   # This operation sets an SDOSystemElement to the owner of the
00458   # Organization. The SDOSystemElement to be set is specified by argument
00459   # "sdo."
00460   # 
00461   # @param self
00462   # @param sdo Reference of owner object.
00463   # 
00464   # @return If the operation was successfully completed.
00465   # 
00466   # @exception SDONotExists if the target SDO does not exist.(This exception 
00467   #                         is mapped to CORBA standard system exception
00468   #                         OBJECT_NOT_EXIST.)
00469   # @exception NotAvailable The target SDO is reachable but cannot respond.
00470   # @exception InvalidParameter The argument "sdo" is null, or the object
00471   #            that is specified by "sdo" in argument "sdo" does not exist.
00472   # @exception InternalError The target SDO cannot execute the operation
00473   #                          completely due to some internal error.
00474   # @endif
00475   def set_owner(self, sdo):
00476     self.__rtcout.RTC_TRACE("set_owner()")
00477     if CORBA.is_nil(sdo):
00478       raise SDOPackage.InvalidParameter("set_owner()")
00479 
00480     try:
00481       self._varOwner = sdo
00482       return True
00483     except:
00484       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00485       raise SDOPackage.InternalError("set_owner()")
00486 
00487     return True
00488 
00489 
00490   ##
00491   # @if jp
00492   # 
00493   # @brief [CORBA interface] Organization のメンバーを取得する
00494   # 
00495   # Organization のメンバーの SDO のリストを返す。
00496   # メンバーが存在しなければ空のリストを返す。
00497   # 
00498   # @param self
00499   # 
00500   # @return Organization に含まれるメンバー SDO のリスト。
00501   # 
00502   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00503   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00504   # @exception NotAvailable SDOは存在するが応答がない。
00505   # @exception InternalError 内部的エラーが発生した。
00506   # @else
00507   # 
00508   # @brief [CORBA interface] Get a menber list of the Organization
00509   # 
00510   # This operation returns a list of SDOs that are members of an
00511   # Organization. An empty list is returned if the Organization does not
00512   # have any members.
00513   # 
00514   # @param self
00515   # 
00516   # @return Member SDOs that are contained in the Organization object.
00517   # 
00518   # @exception SDONotExists if the target SDO does not exist.(This exception 
00519   #                         is mapped to CORBA standard system exception
00520   #                         OBJECT_NOT_EXIST.)
00521   # @exception NotAvailable The target SDO is reachable but cannot respond.
00522   # @exception InternalError The target SDO cannot execute the operation
00523   #                          completely due to some internal error.
00524   # @endif
00525   def get_members(self):
00526     self.__rtcout.RTC_TRACE("get_members()")
00527     try:
00528       return self._memberList
00529     except:
00530       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00531       raise SDOPackage.InternalError("get_members()")
00532 
00533 
00534   ##
00535   # @if jp
00536   # 
00537   # @brief [CORBA interface] SDO の セット
00538   # 
00539   # SDO のリストを Organization のメンバーとしてセットする。
00540   # Organization がすでにメンバーの SDO を管理している場合は、
00541   # 与えられた SDO のリストに置き換える。
00542   # 
00543   # @param self
00544   # @param sdos メンバーの SDO。
00545   # 
00546   # @return オペレーションが成功したかどうかを返す。
00547   # 
00548   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00549   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00550   # @exception InvalidParameter 引数 "SDOList" が nullである、もしくは
00551   #            引数に指定された "SDOList" が存在しない。
00552   # @exception NotAvailable SDOは存在するが応答がない。
00553   # @exception InternalError 内部的エラーが発生した。
00554   # @else
00555   # 
00556   # @brief [CORBA interface] Set SDO's ServiceProfile
00557   # 
00558   # This operation assigns a list of SDOs to an Organization as its members.
00559   # If the Organization has already maintained a member SDO(s) when it is
00560   # called, the operation replaces the member(s) with specified list of
00561   # SDOs.
00562   # 
00563   # @param self
00564   # @param sdos Member SDOs to be assigned.
00565   # 
00566   # @return If the operation was successfully completed.
00567   # 
00568   # @exception SDONotExists if the target SDO does not exist.(This exception 
00569   #                         is mapped to CORBA standard system exception
00570   #                         OBJECT_NOT_EXIST.)
00571   # @exception NotAvailable The target SDO is reachable but cannot respond.
00572   # @exception InvalidParameter The argument "SDOList" is null, or if the
00573   #            object that is specified by the argument "sdos" does not
00574   #            exist.
00575   # @exception InternalError The target SDO cannot execute the operation
00576   #                          completely due to some internal error.
00577   # @endif
00578   def set_members(self, sdos):
00579     self.__rtcout.RTC_TRACE("set_members()")
00580     if sdos is None:
00581       raise SDOPackage.InvalidParameter("set_members(): SDOList is empty.")
00582 
00583     try:
00584       self._memberList = sdos
00585       return True
00586     except:
00587       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00588       raise SDOPackage.InternalError("set_members()")
00589 
00590     return True
00591 
00592 
00593   ##
00594   # @if jp
00595   # 
00596   # @brief [CORBA interface] SDO メンバーの追加
00597   # 
00598   # Organization にメンバーとして SDO を追加する。
00599   # 引数 "sdo" に追加するメンバー SDO を指定する。
00600   # 
00601   # @param self
00602   # @param sdo_list Organization に追加される SDO のリスト。
00603   # 
00604   # @return オペレーションが成功したかどうかを返す。
00605   # 
00606   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00607   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00608   # @exception InvalidParameter 引数 "sdo" が nullである。
00609   # @exception NotAvailable SDOは存在するが応答がない。
00610   # @exception InternalError 内部的エラーが発生した。
00611   # @else
00612   # 
00613   # @brief [CORBA interface] Add the menebr SDOs
00614   # 
00615   # This operation adds a member that is an SDO to the organization.
00616   # The member to be added is specified by argument "sdo."
00617   # 
00618   # @param self
00619   # @param sdo The member to be added to the organization.
00620   # 
00621   # @return If the operation was successfully completed.
00622   # 
00623   # @exception SDONotExists if the target SDO does not exist.(This exception 
00624   #                         is mapped to CORBA standard system exception
00625   #                         OBJECT_NOT_EXIST.)
00626   # @exception NotAvailable The target SDO is reachable but cannot respond.
00627   # @exception InvalidParameter The argument "sdo" is null.
00628   # @exception InternalError The target SDO cannot execute the operation
00629   #                          completely due to some internal error.
00630   # @endif
00631   def add_members(self, sdo_list):
00632     self.__rtcout.RTC_TRACE("add_members()")
00633     if not sdo_list:
00634       raise SDOPackage.InvalidParameter("add_members(): SDOList is empty.")
00635 
00636     try:
00637       OpenRTM_aist.CORBA_SeqUtil.push_back_list(self._memberList, sdo_list)
00638       return True
00639     except:
00640       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00641       raise SDOPackage.InternalError("add_members()")
00642 
00643     return False
00644 
00645 
00646   ##
00647   # @if jp
00648   # 
00649   # @brief [CORBA interface] SDO メンバーの削除
00650   # 
00651   # Organization から引数で指定された "id" の SDO を削除する。
00652   # 
00653   # @param self
00654   # @param id 削除する SDO の id。
00655   # 
00656   # @return オペレーションが成功したかどうかを返す。
00657   # 
00658   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00659   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00660   # @exception InvalidParameter 引数 "id" が null もしくは存在しない。
00661   # @exception NotAvailable SDOは存在するが応答がない。
00662   # @exception InternalError 内部的エラーが発生した。
00663   # @else
00664   # 
00665   # @brief [CORBA interface] Remove menber SDO from Organization
00666   # 
00667   # This operation removes a member from the organization. The member to be
00668   # removed is specified by argument "id."
00669   # 
00670   # @param self
00671   # @param id Id of the SDO to be removed from the organization.
00672   # 
00673   # @return If the operation was successfully completed.
00674   # 
00675   # @exception SDONotExists if the target SDO does not exist.(This exception 
00676   #                         is mapped to CORBA standard system exception
00677   #                         OBJECT_NOT_EXIST.)
00678   # @exception NotAvailable The target SDO is reachable but cannot respond.
00679   # @exception InvalidParameter The argument "id" is null or does not exist.
00680   # @exception InternalError The target SDO cannot execute the operation
00681   #                          completely due to some internal error.
00682   # @endif
00683   def remove_member(self, id):
00684     self.__rtcout.RTC_TRACE("remove_member(%s)", id)
00685     if not id:
00686       self.__rtcout.RTC_ERROR("remove_member(): Enpty name.")
00687       raise SDOPackage.InvalidParameter("remove_member(): Empty name.")
00688 
00689     index = OpenRTM_aist.CORBA_SeqUtil.find(self._memberList, self.sdo_id(id))
00690 
00691     if index < 0:
00692       self.__rtcout.RTC_ERROR("remove_member(): Not found.")
00693       raise SDOPackage.InvalidParameter("remove_member(): Not found.")
00694 
00695     try:
00696       OpenRTM_aist.CORBA_SeqUtil.erase(self._memberList, index)
00697       return True
00698     except:
00699       self.__rtcout.RTC_ERROR("unknown exception")
00700       raise SDOPackage.InternalError("remove_member(): Not found.")
00701 
00702     return False
00703 
00704 
00705   ##
00706   # @if jp
00707   # 
00708   # @brief [CORBA interface] Organization の DependencyType を取得
00709   # 
00710   # Organization の関係を表す "DependencyType" を返す。
00711   # 
00712   # @param self
00713   # 
00714   # @return Organizaton の依存関係 DependencyType を返す。
00715   #         DependencyType は OMG SDO 仕様の Section 2.2.2 2-3 ページの
00716   #         "Data Structures Used by Resource Data Model" を参照。
00717   # 
00718   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00719   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00720   # @exception NotAvailable SDOは存在するが応答がない。
00721   # @exception InternalError 内部的エラーが発生した。
00722   # @else
00723   # 
00724   # @brief [CORBA interface] Get the DependencyType of the Organization
00725   # 
00726   # This operation gets the relationship "DependencyType" of the
00727   # Organization.
00728   # 
00729   # @param self
00730   # 
00731   # @return The relationship of the Organization as DependencyType.
00732   #         DependencyType is defined in Section 2.2.2, "Data Structures
00733   #         Used by Resource Data Model," on page 2-3
00734   #         of OMG SDO Specification.
00735   # 
00736   # @exception SDONotExists if the target SDO does not exist.(This exception 
00737   #                         is mapped to CORBA standard system exception
00738   #                         OBJECT_NOT_EXIST.)
00739   # @exception NotAvailable The target SDO is reachable but cannot respond.
00740   # @exception InternalError The target SDO cannot execute the operation
00741   #                          completely due to some internal error.
00742   # @endif
00743   def get_dependency(self):
00744     self.__rtcout.RTC_TRACE("get_dependency()")
00745     return self._dependency
00746 
00747 
00748   ##
00749   # @if jp
00750   # 
00751   # @brief [CORBA interface] Organization の DependencyType をセットする
00752   # 
00753   # Organization の依存関係 "DependencyType" をセットする。
00754   # 引数 "dependencty" により依存関係を与える。
00755   # 
00756   # @param self
00757   # @param dependency Organization の依存関係を表す DependencyType。
00758   #        DependencyType は OMG SDO 仕様の Section 2.2.2、2-3 ページの
00759   #        "Data Structures Used by Resource Data Model" を参照。
00760   # 
00761   # @return オペレーションが成功したかどうかを返す。
00762   # 
00763   # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準
00764   #                         システム例外のOBJECT_NOT_EXISTにマッピングされる)
00765   # @exception InvalidParameter 引数 "sProfile" が nullである。
00766   # @exception NotAvailable SDOは存在するが応答がない。
00767   # @exception InternalError 内部的エラーが発生した。
00768   # @else
00769   # 
00770   # @brief [CORBA interface] Set the DependencyType of the Organization
00771   # 
00772   # This operation sets the relationship "DependencyType" of the
00773   # Organization. The value to be set is specified by argument "dependency."
00774   # 
00775   # @param self
00776   # @param dependency The relationship of the Organization as
00777   #                   DependencyType. DependencyType is defined in Section
00778   #                   2.2.2, "Data Structures Used by Resource Data Model,"
00779   #                   on page 2-3.
00780   # 
00781   # @return If the operation was successfully completed.
00782   # 
00783   # @exception SDONotExists if the target SDO does not exist.(This exception 
00784   #                         is mapped to CORBA standard system exception
00785   #                         OBJECT_NOT_EXIST.)
00786   # @exception NotAvailable The target SDO is reachable but cannot respond.
00787   # @exception InvalidParameter The argument "dependency" is null.
00788   # @exception InternalError The target SDO cannot execute the operation
00789   #                          completely due to some internal error.
00790   # @endif
00791   def set_dependency(self, dependency):
00792     self.__rtcout.RTC_TRACE("set_dependency()")
00793     if dependency is None:
00794       raise SDOPackage.InvalidParameter("set_dependency(): Empty dependency.")
00795 
00796     try:
00797       self._dependency = dependency
00798       return True
00799     except:
00800       self.__rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())
00801       raise SDOPackage.InternalError("set_dependency(): Unknown.")
00802 
00803     return False
00804 
00805 
00806   def getObjRef(self):
00807     return self._objref
00808 
00809 
00810 
00811   # end of CORBA interface definition
00812   #============================================================
00813 
00814 
00815   ##
00816   # @if jp
00817   # @class nv_name
00818   # @brief NVList検索用functor
00819   # @else
00820   #
00821   # @endif
00822   class nv_name:
00823     def __init__(self, name):
00824       self._name = name
00825 
00826     def __call__(self, nv):
00827       return str(self._name) == str(nv.name)
00828 
00829   ##
00830   # @if jp
00831   # @class sdo_id
00832   # @brief SDO検索用functor
00833   # @else
00834   #
00835   # @endif
00836   class sdo_id:
00837     def __init__(self, id_):
00838       self._id = id_
00839 
00840     def __call__(self, sdo):
00841       id_ = sdo.get_sdo_id()
00842       return str(self._id) == str(id_)
00843     


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