00001 #!/usr/bin/env python 00002 # -*- coding: euc-jp -*- 00003 00004 ## 00005 # @file SdoConfiguration.py 00006 # @brief RT component base class 00007 # @date $Date: 2007/09/06$ 00008 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara 00009 # 00010 # Copyright (C) 2006-2008 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 copy 00019 import threading 00020 00021 import OpenRTM_aist 00022 ## 00023 # @if jp 00024 # @namespace SDOPackage 00025 # 00026 # @brief SDO パッケージ 00027 # 00028 # @else 00029 # 00030 # @namespace SDOPackage 00031 # 00032 # @endif 00033 import SDOPackage, SDOPackage__POA 00034 00035 00036 00037 # SdoConfiguration with SeqEx 159120 00038 # SdoConfiguration with SeqUtil 114504 114224 00039 00040 00041 ## 00042 # @if jp 00043 # 00044 # @brief NVList を Properties へコピーする 00045 # 00046 # このオペレーションは NVList を Properties へコピーする。 00047 # 00048 # @param prop NVList の値を格納する Properties 00049 # @param nv コピー元の NVList 00050 # 00051 # @else 00052 # 00053 # @brief Copy to Proeprties from NVList 00054 # 00055 # This operation copies NVList to Properties. 00056 # 00057 # @param prop Properties to store NVList values 00058 # @param nv NVList that is copies from 00059 # 00060 # @endif 00061 def toProperties(prop, conf): 00062 OpenRTM_aist.NVUtil.copyToProperties(prop, conf.configuration_data) 00063 00064 00065 ## 00066 # @if jp 00067 # 00068 # @brief Properties を NVList へコピーする 00069 # 00070 # このオペレーションは Properties を NVList へコピーする。 00071 # NVList の value は全て CORBA::string 型としてコピーする。 00072 # 00073 # @param nv Properties の値を格納する NVList 00074 # @param prop コピー元の Properties 00075 # 00076 # @else 00077 # 00078 # @brief Copy to NVList from Proeprties 00079 # 00080 # This operation copies Properties to NVList. 00081 # Created NVList's values are CORBA::string. 00082 # 00083 # @param nv NVList to store Properties values 00084 # @param prop Properties that is copies from 00085 # 00086 # @endif 00087 def toConfigurationSet(conf, prop): 00088 conf.description = prop.getProperty("description") 00089 conf.id = prop.getName() 00090 OpenRTM_aist.NVUtil.copyFromProperties(conf.configuration_data, prop) 00091 00092 00093 00094 ## 00095 # @if jp 00096 # 00097 # @class Configuration_impl 00098 # @brief SDO Configuration 実装クラス 00099 # 00100 # Configuration interface は Resource Data Model で定義されたデータの 00101 # 追加、削除等の操作を行うためのインターフェースである。 00102 # DeviceProfile, ServiceProfile, ConfigurationProfile および Organization 00103 # の変更を行うためのオペレーションを備えている。SDO の仕様ではアクセス制御 00104 # およびセキュリティに関する詳細については規定していない。 00105 # 00106 # 複数の設定 (Configuration) を保持することにより、容易かつ素早くある設定 00107 # を反映させることができる。事前に定義された複数の設定を ConfigurationSets 00108 # および configuration profile として保持することができる。ひとつの 00109 # ConfigurationSet は特定の設定に関連付けられた全プロパティ値のリストを、 00110 # ユニークID、詳細とともに持っている。これにより、各設定項目の詳細を記述し 00111 # 区別することができる。Configuration interface のオペレーションはこれら 00112 # ConfiguratioinSets の管理を支援する。 00113 # 00114 # 00115 # - ConfigurationSet: id, description, NVList から構成される1セットの設定 00116 # - ConfigurationSetList: ConfigurationSet のリスト 00117 # - Parameter: name, type, allowed_values から構成されるパラメータ定義。 00118 # - ActiveConfigurationSet: 現在有効なコンフィギュレーションの1セット。 00119 # 00120 # 以下、SDO仕様に明記されていないもしくは解釈がわからないため独自解釈 00121 # 00122 # 以下の関数は ParameterList に対して処理を行う。 00123 # - get_configuration_parameters() 00124 # 00125 # 以下の関数はアクティブなConfigurationSetに対する処理を行う 00126 # - get_configuration_parameter_values() 00127 # - get_configuration_parameter_value() 00128 # - set_configuration_parameter() 00129 # 00130 # 以下の関数はConfigurationSetListに対して処理を行う 00131 # - get_configuration_sets() 00132 # - get_configuration_set() 00133 # - set_configuration_set_values() 00134 # - get_active_configuration_set() 00135 # - add_configuration_set() 00136 # - remove_configuration_set() 00137 # - activate_configuration_set() 00138 # 00139 # @since 0.4.0 00140 # 00141 # @else 00142 # 00143 # @class Configuration_impl 00144 # @brief Configuration implementation class 00145 # 00146 # Configuration interface provides operations to add or remove data 00147 # specified in resource data model. These operations provide functions to 00148 # change DeviceProfile, ServiceProfile, ConfigurationProfile, and 00149 # Organization. This specification does not address access control or 00150 # security aspects. Access to operations that modifies or removes profiles 00151 # should be controlled depending upon the application. 00152 # 00153 # Different configurations can be stored for simple and quick activation. 00154 # Different predefined configurations are stored as different 00155 # ConfigurationSets or configuration profile. A ConfigurationSet stores the 00156 # value of all properties assigned for the particular configuration along 00157 # with its unique id and description to identify and describe the 00158 # configuration respectively. Operations in the configuration interface 00159 # help manage these ConfigurationSets. 00160 # 00161 # @since 0.4.0 00162 # 00163 # @endif 00164 class Configuration_impl(SDOPackage__POA.Configuration): 00165 """ 00166 """ 00167 00168 ## 00169 # @if jp 00170 # 00171 # @brief コンストラクタ 00172 # 00173 # コンストラクタ 00174 # 00175 # @param self 00176 # @param configAdmin ConfigurationSetList 00177 # @param sdoServiceAdmin SdoServiceAdmin 00178 # 00179 # @else 00180 # @brief class constructor 00181 # @param self 00182 # @param configAdmin ConfigurationSetList 00183 # @param sdoServiceAdmin SdoServiceAdmin 00184 # 00185 # @endif 00186 # Configuration_impl(RTC::ConfigAdmin& configAdmin, 00187 # RTC::SdoServiceAdmin& sdoServiceAdmin); 00188 def __init__(self, configAdmin, sdoServiceAdmin): 00189 """ 00190 \var self._deviceProfile SDO DeviceProfile with mutex lock 00191 """ 00192 self._deviceProfile = SDOPackage.DeviceProfile("","","","",[]) 00193 self._dprofile_mutex = threading.RLock() 00194 00195 """ 00196 \var self._serviceProfiles SDO ServiceProfileList 00197 """ 00198 self._serviceProfiles = [] 00199 self._sprofile_mutex = threading.RLock() 00200 00201 self._parameters = [] 00202 self._params_mutex = threading.RLock() 00203 00204 self._configsets = configAdmin 00205 self._config_mutex = threading.RLock() 00206 00207 self._sdoservice = sdoServiceAdmin 00208 00209 """ 00210 \var self._organizations SDO OrganizationList 00211 """ 00212 self._organizations = [] 00213 self._org_mutex = threading.RLock() 00214 00215 self._objref = self._this() 00216 self._rtcout = OpenRTM_aist.Manager.instance().getLogbuf("rtobject.sdo_config") 00217 00218 00219 #============================================================ 00220 # 00221 # <<< CORBA interfaces >>> 00222 # 00223 #============================================================ 00224 00225 ## 00226 # @if jp 00227 # 00228 # @brief [CORBA interface] SDO の DeviceProfile のセット 00229 # 00230 # このオペレーションは SDO の DeviceProfile をセットする。SDO が 00231 # DeviceProfile を保持していない場合は新たな DeviceProfile を生成し、 00232 # DeviceProfile をすでに保持している場合は既存のものと置き換える。 00233 # 00234 # @param self 00235 # @param dProfile SDO に関連付けられる DeviceProfile。 00236 # 00237 # @return オペレーションが成功したかどうかを返す。 00238 # 00239 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00240 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00241 # @exception NotAvailable SDOは存在するが応答がない。 00242 # @exception InvalidParameter 引数 "dProfile" が null である。 00243 # @exception InternalError 内部的エラーが発生した。 00244 # 00245 # @else 00246 # 00247 # @brief [CORBA interface] Set DeviceProfile of SDO 00248 # 00249 # This operation sets the DeviceProfile of an SDO. If the SDO does not 00250 # have DeviceProfile, the operation will create a new DeviceProfile, 00251 # otherwise it will replace the existing DeviceProfile. 00252 # 00253 # @param self 00254 # @param dProfile The device profile that is to be assigned to this SDO. 00255 # 00256 # @return If the operation was successfully completed. 00257 # 00258 # @exception SDONotExists if the target SDO does not exist.(This exception 00259 # is mapped to CORBA standard system exception 00260 # OBJECT_NOT_EXIST.) 00261 # @exception NotAvailable The target SDO is reachable but cannot respond. 00262 # @exception InvalidParameter The argument "dProfile" is null. 00263 # @exception InternalError The target SDO cannot execute the operation 00264 # completely due to some internal error. 00265 # @endif 00266 def set_device_profile(self, dProfile): 00267 self._rtcout.RTC_TRACE("set_device_profile()") 00268 if dProfile is None: 00269 raise SDOPackage.InvalidParameter("dProfile is empty.") 00270 00271 try: 00272 guard = OpenRTM_aist.ScopedLock(self._dprofile_mutex) 00273 self._deviceProfile = dProfile 00274 except: 00275 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00276 raise SDOPackage.InternalError("Unknown Error") 00277 00278 return True 00279 00280 00281 ## 00282 # @if jp 00283 # 00284 # @brief [CORBA interface] SDO の ServiceProfile のセット 00285 # 00286 # このオペレーションはこの Configuration interface を所有する対象 SDO の 00287 # ServiceProfile を追加する。もし引数の ServiceProfile の id が空であれば 00288 # 新しい ID が生成されその ServiceProfile を格納する。もし id が空で 00289 # なければ、SDO は同じ id を持つ ServiceProfile を検索する。 00290 # 同じ id が存在しなければこの ServiceProfile を追加し、id が存在すれば 00291 # 上書きをする。<br> 00292 # (注意:最新バージョンではオペレーション名がadd_service_profile変更) 00293 # 00294 # @param self 00295 # @param sProfile 追加する ServiceProfile 00296 # 00297 # @return オペレーションが成功したかどうかを返す。 00298 # 00299 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00300 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00301 # @exception InvalidParameter 引数 "sProfile" が nullである。 00302 # @exception NotAvailable SDOは存在するが応答がない。 00303 # @exception InternalError 内部的エラーが発生した。 00304 # @else 00305 # 00306 # @brief [CORBA interface] Set SDO's ServiceProfile 00307 # 00308 # This operation adds ServiceProfile to the target SDO that navigates this 00309 # Configuration interface. If the id in argument ServiceProfile is null, 00310 # new id is created and the ServiceProfile is stored. If the id is not 00311 # null, the target SDO searches for ServiceProfile in it with the same id. 00312 # It adds the ServiceProfile if not exist, or overwrites if exist. 00313 # 00314 # @param self 00315 # @param sProfile ServiceProfile to be added. 00316 # 00317 # @return If the operation was successfully completed. 00318 # 00319 # @exception SDONotExists if the target SDO does not exist.(This exception 00320 # is mapped to CORBA standard system exception 00321 # OBJECT_NOT_EXIST.) 00322 # @exception NotAvailable The target SDO is reachable but cannot respond. 00323 # @exception InvalidParameter The argument "sProfile" is null. 00324 # @exception InternalError The target SDO cannot execute the operation 00325 # completely due to some internal error. 00326 # @endif 00327 def add_service_profile(self, sProfile): 00328 self._rtcout.RTC_TRACE("add_service_profile()") 00329 if sProfile is None: 00330 raise SDOPackage.InvalidParameter("sProfile is empty.") 00331 00332 try: 00333 return self._sdoservice.addSdoServiceConsumer(sProfile) 00334 except: 00335 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00336 raise SDOPackage.InternalError("Configuration.add_service_profile") 00337 00338 return False 00339 00340 00341 ## 00342 # @if jp 00343 # 00344 # @brief [CORBA interface] Organization の追加 00345 # 00346 # このオペレーションは Organization object のリファレンスを追加する。 00347 # 00348 # @param self 00349 # @param org 追加する Organization 00350 # 00351 # @return オペレーションが成功したかどうかを返す。 00352 # 00353 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00354 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00355 # @exception NotAvailable SDOは存在するが応答がない。 00356 # @exception InvalidParameter 引数 "organization" が null である。 00357 # @exception InternalError 内部的エラーが発生した。 00358 # @else 00359 # 00360 # @brief [CORBA interface] Add Organization 00361 # 00362 # This operation adds reference of an Organization object. 00363 # 00364 # @param self 00365 # @param org Organization to be added. 00366 # 00367 # @return If the operation was successfully completed. 00368 # 00369 # @exception SDONotExists if the target SDO does not exist.(This exception 00370 # is mapped to CORBA standard system exception 00371 # OBJECT_NOT_EXIST.) 00372 # @exception NotAvailable The target SDO is reachable but cannot respond. 00373 # @exception InvalidParameter The argument "organization" is null. 00374 # @exception InternalError The target SDO cannot execute the operation 00375 # completely due to some internal error. 00376 # @endif 00377 def add_organization(self, org): 00378 self._rtcout.RTC_TRACE("add_organization()") 00379 if org is None: 00380 raise SDOPackage.InvalidParameter("org is empty.") 00381 00382 try: 00383 OpenRTM_aist.CORBA_SeqUtil.push_back(self._organizations, org) 00384 except: 00385 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00386 raise SDOPackage.InternalError("Configuration.add_organization") 00387 00388 return True 00389 00390 00391 ## 00392 # @if jp 00393 # 00394 # @brief [CORBA interface] ServiceProfile の削除 00395 # 00396 # このオペレーションはこの Configuration interface を持つ SDO の 00397 # Service の ServiceProfile を削除する。削除する ServiceProfile 00398 # は引数により指定される。 00399 # 00400 # @param self 00401 # @param id_ 削除する ServcieProfile の serviceID。 00402 # 00403 # @return オペレーションが成功したかどうかを返す。 00404 # 00405 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00406 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00407 # @exception InvalidParameter 引数 "id" が null である。もしくは "id" に 00408 # 関連付けられた ServiceProfile が存在しない。 00409 # @exception NotAvailable SDOは存在するが応答がない。 00410 # @exception InternalError 内部的エラーが発生した。 00411 # @else 00412 # 00413 # @brief [CORBA interface] Remove ServiceProfile 00414 # 00415 # This operation removes ServiceProfile object to the SDO that has this 00416 # Configuration interface. The ServiceProfile object to be removed is 00417 # specified by argument. 00418 # 00419 # @param self 00420 # @param id_ serviceID of a ServiceProfile to be removed. 00421 # 00422 # @return If the operation was successfully completed. 00423 # 00424 # @exception SDONotExists if the target SDO does not exist.(This exception 00425 # is mapped to CORBA standard system exception 00426 # OBJECT_NOT_EXIST.) 00427 # @exception InvalidParameter The argument "sProfile" is null, or if the 00428 # object that is specified by argument "sProfile" does not exist. 00429 # @exception NotAvailable The target SDO is reachable but cannot respond. 00430 # @exception InternalError The target SDO cannot execute the operation 00431 # completely due to some internal error. 00432 # @endif 00433 def remove_service_profile(self, id_): 00434 self._rtcout.RTC_TRACE("remove_service_profile(%s)", id_) 00435 if id_ is None: 00436 raise SDOPackage.InvalidParameter("id is empty.") 00437 00438 try: 00439 return self._sdoservice.removeSdoServiceConsumer(id_) 00440 except: 00441 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00442 raise SDOPackage.InternalError("Configuration.remove_service_profile") 00443 00444 return False 00445 00446 00447 ## 00448 # @if jp 00449 # 00450 # @brief [CORBA interface] Organization の参照の削除 00451 # 00452 # このオペレーションは Organization の参照を削除する。 00453 # 00454 # @param self 00455 # @param organization_id 削除する Organization の一意な id。 00456 # 00457 # @return オペレーションが成功したかどうかを返す。 00458 # 00459 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00460 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00461 # @exception InvalidParameter 引数 "organization_id" が null である。 00462 # もしくは "organization_id" に関連付けられた 00463 # OrganizationProfile が存在しない。 00464 # @exception NotAvailable SDOは存在するが応答がない。 00465 # @exception InternalError 内部的エラーが発生した。 00466 # @else 00467 # 00468 # @brief [CORBA interface] Remove the reference of Organization 00469 # 00470 # This operation removes the reference of an Organization object. 00471 # 00472 # @param self 00473 # @param organization_id Unique id of the organization to be removed. 00474 # 00475 # @return If the operation was successfully completed. 00476 # 00477 # @exception SDONotExists if the target SDO does not exist.(This exception 00478 # is mapped to CORBA standard system exception 00479 # OBJECT_NOT_EXIST.) 00480 # @exception InvalidParameter The argument "organizationID" is null, 00481 # or the object which is specified by argument "organizationID" 00482 # does not exist. 00483 # @exception NotAvailable The target SDO is reachable but cannot respond. 00484 # @exception InternalError The target SDO cannot execute the operation 00485 # completely due to some internal error. 00486 # @endif 00487 def remove_organization(self, organization_id): 00488 self._rtcout.RTC_TRACE("remove_organization(%s)", organization_id) 00489 if organization_id is None: 00490 raise SDOPackage.InvalidParameter("organization_id is empty.") 00491 00492 try: 00493 guard = OpenRTM_aist.ScopedLock(self._org_mutex) 00494 OpenRTM_aist.CORBA_SeqUtil.erase_if(self._organizations, 00495 self.org_id(organization_id)) 00496 except: 00497 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00498 raise SDOPackage.InternalError("Configuration.remove_organization") 00499 00500 return True 00501 00502 00503 ## 00504 # @if jp 00505 # 00506 # @brief [CORBA interface] 設定パラメータのリストの取得 00507 # 00508 # このオペレーションは configuration parameter のリストを返す。 00509 # SDO が設定可能なパラメータを持たなければ空のリストを返す。 00510 # 00511 # @param self 00512 # 00513 # @return 設定を特徴付けるパラメータ定義のリスト。 00514 # 00515 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00516 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00517 # @exception NotAvailable SDOは存在するが応答がない。 00518 # @exception InternalError 内部的エラーが発生した。 00519 # @else 00520 # 00521 # @brief [CORBA interface] Getting a list of configuration parameter 00522 # 00523 # This operation returns a list of Parameters. An empty list is returned 00524 # if the SDO does not have any configurable parameter. 00525 # 00526 # @param self 00527 # @return The list with definitions of parameters characterizing the 00528 # configuration. 00529 # 00530 # @exception SDONotExists if the target SDO does not exist.(This exception 00531 # is mapped to CORBA standard system exception 00532 # OBJECT_NOT_EXIST.) 00533 # @exception NotAvailable The target SDO is reachable but cannot respond. 00534 # @exception InternalError The target SDO cannot execute the operation 00535 # completely due to some internal error. 00536 # @endif 00537 def get_configuration_parameters(self): 00538 self._rtcout.RTC_TRACE("get_configuration_parameters()") 00539 try: 00540 guard = OpenRTM_aist.ScopedLock(self._params_mutex) 00541 param = copy.copy(self._parameters) 00542 return param 00543 except: 00544 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00545 raise SDOPackage.InternalError("Configuration.get_configuration_parameters") 00546 00547 return [] 00548 00549 00550 ## 00551 # @if jp 00552 # 00553 # @brief [CORBA interface] Configuration parameter の値のリストの取得 00554 # 00555 # このオペレーションは全ての configuration パラメータおよび値を返す。<br> 00556 # ※本実装では常に空のリストを返す 00557 # 00558 # @param self 00559 # 00560 # @return 全ての configuration パラメータと値のリスト。 00561 # 00562 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00563 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00564 # @exception NotAvailable SDOは存在するが応答がない。 00565 # @exception InternalError 内部的エラーが発生した。 00566 # @else 00567 # 00568 # @brief [CORBA interface] Getting value list of configuration parameter 00569 # 00570 # This operation returns all configuration parameters and their values. 00571 # 00572 # @param self 00573 # @return List of all configuration parameters and their values. 00574 # 00575 # @exception SDONotExists if the target SDO does not exist.(This exception 00576 # is mapped to CORBA standard system exception 00577 # OBJECT_NOT_EXIST.) 00578 # @exception NotAvailable The target SDO is reachable but cannot respond. 00579 # @exception InternalError The target SDO cannot execute the operation 00580 # completely due to some internal error. 00581 # @endif 00582 def get_configuration_parameter_values(self): 00583 self._rtcout.RTC_TRACE("get_configuration_parameter_values()") 00584 guard = OpenRTM_aist.ScopedLock(self._config_mutex) 00585 nvlist = [] 00586 return nvlist 00587 00588 00589 ## 00590 # @if jp 00591 # 00592 # @brief [CORBA interface] Configuration parameter の値の取得 00593 # 00594 # このオペレーションは引数 "name" で指定されたパラメータ値を返す。<br> 00595 # ※本実装では常に None を返す 00596 # 00597 # @param self 00598 # @param name 値を要求するパラメータの名前。 00599 # 00600 # @return 指定されたパラメータの値。 00601 # 00602 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00603 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00604 # @exception InvalidParameter 引数 "name" が null である。 00605 # もしくは "name" に関連付けられたパラメータが存在しない。 00606 # @exception NotAvailable SDOは存在するが応答がない。 00607 # @exception InternalError 内部的エラーが発生した。 00608 # @else 00609 # 00610 # @brief [CORBA interface] Getting value of configuration parameter 00611 # 00612 # This operation returns a value of parameter that is specified by 00613 # argument "name." 00614 # 00615 # @param self 00616 # @param Name of the parameter whose value is requested. 00617 # 00618 # @return The value of the specified parameter. 00619 # 00620 # @exception SDONotExists if the target SDO does not exist.(This exception 00621 # is mapped to CORBA standard system exception 00622 # OBJECT_NOT_EXIST.) 00623 # @exception InvalidParameter if the value of the argument "name" is 00624 # empty String, or null, or if the parameter 00625 # that is specified by argument "name" 00626 # does not exist. 00627 # @exception NotAvailable The target SDO is reachable but cannot respond. 00628 # @exception InternalError The target SDO cannot execute the operation 00629 # completely due to some internal error. 00630 # @endif 00631 def get_configuration_parameter_value(self, name): 00632 self._rtcout.RTC_TRACE("get_configuration_parameter_value(%s)", name) 00633 if not name: 00634 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00635 raise SDOPackage.InvalidParameter("Name is empty.") 00636 00637 return None 00638 00639 00640 ## 00641 # @if jp 00642 # 00643 # @brief [CORBA interface] Configuration パラメータの変更 00644 # 00645 # このオペレーションは "name" で指定したパラメータの値を "value" に 00646 # 変更する。<br> 00647 # ※本実装では常にTrueを返す 00648 # 00649 # @param self 00650 # @param name 変更対象パラメータの名前。 00651 # @param value 変更対象パラメータの新しい値。 00652 # 00653 # @return オペレーションが成功したかどうかを返す。 00654 # 00655 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00656 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00657 # @exception InvalidParameter 引数( "name"もしくは"value") が null である。 00658 # もしくは "name" に関連付けられたパラメータが存在しない。 00659 # @exception NotAvailable SDOは存在するが応答がない。 00660 # @exception InternalError 内部的エラーが発生した。 00661 # @else 00662 # 00663 # @brief [CORBA interface] Modify the parameter value 00664 # 00665 # This operation sets a parameter to a value that is specified by argument 00666 # "value." The parameter to be modified is specified by argument " name." 00667 # 00668 # @param self 00669 # @param name The name of parameter to be modified. 00670 # @param value New value of the specified parameter. 00671 # 00672 # @return If the operation was successfully completed. 00673 # 00674 # @exception SDONotExists if the target SDO does not exist.(This exception 00675 # is mapped to CORBA standard system exception 00676 # OBJECT_NOT_EXIST.) 00677 # @exception InvalidParameter if arguments ("name" and/or "value") is 00678 # null, or if the parameter that is specified by the argument 00679 # "name" does not exist. 00680 # @exception NotAvailable The target SDO is reachable but cannot respond. 00681 # @exception InternalError The target SDO cannot execute the operation 00682 # completely due to some internal error. 00683 # @endif 00684 def set_configuration_parameter(self, name, value): 00685 self._rtcout.RTC_TRACE("set_configuration_parameter(%s, value)", name) 00686 if name is None or value is None: 00687 raise SDOPackage.InvalidParameter("Name/Value is empty.") 00688 return True 00689 00690 00691 ## 00692 # @if jp 00693 # 00694 # @brief [CORBA interface] ConfigurationSet リストの取得 00695 # 00696 # このオペレーションは ConfigurationProfile が持つ ConfigurationSet の 00697 # リストを返す。 SDO が ConfigurationSet を持たなければ空のリストを返す。 00698 # 00699 # @param self 00700 # 00701 # @return 保持している ConfigurationSet のリストの現在値。 00702 # 00703 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00704 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00705 # @exception NotAvailable SDOは存在するが応答がない。 00706 # @exception InternalError 内部的エラーが発生した。 00707 # @else 00708 # 00709 # @brief [CORBA interface] Getting list of ConfigurationSet 00710 # 00711 # This operation returns a list of ConfigurationSets that the 00712 # ConfigurationProfile has. An empty list is returned if the SDO does not 00713 # have any ConfigurationSets. 00714 # This operation returns a list of all ConfigurationSets of the SDO. 00715 # If no predefined ConfigurationSets exist, then empty list is returned. 00716 # 00717 # @param self 00718 # @return The list of stored configuration with their current values. 00719 # 00720 # @exception SDONotExists if the target SDO does not exist.(This exception 00721 # is mapped to CORBA standard system exception 00722 # OBJECT_NOT_EXIST.) 00723 # @exception NotAvailable The target SDO is reachable but cannot respond. 00724 # @exception InternalError The target SDO cannot execute the operation 00725 # completely due to some internal error. 00726 # @endif 00727 def get_configuration_sets(self): 00728 self._rtcout.RTC_TRACE("get_configuration_sets()") 00729 try: 00730 guard = OpenRTM_aist.ScopedLock(self._config_mutex) 00731 00732 cf = self._configsets.getConfigurationSets() 00733 len_ = len(cf) 00734 00735 config_sets = [SDOPackage.ConfigurationSet("","",[]) for i in range(len_)] 00736 for i in range(len_): 00737 toConfigurationSet(config_sets[i], cf[i]) 00738 00739 return config_sets 00740 00741 except: 00742 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00743 raise SDOPackage.InternalError("Configuration.get_configuration_sets") 00744 00745 return [] 00746 00747 ## 00748 # @if jp 00749 # 00750 # @brief [CORBA interface] ConfigurationSet の取得 00751 # 00752 # このオペレーションは引数で指定された ConfigurationSet の ID に関連 00753 # 付けられた ConfigurationSet を返す。 00754 # 00755 # @param self 00756 # @param config_id ConfigurationSet の識別子。 00757 # 00758 # @return 引数により指定された ConfigurationSet。 00759 # 00760 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00761 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00762 # @exception InvalidParameter "config_id" が null か、指定された 00763 # ConfigurationSet が存在しない。 00764 # @exception NotAvailable SDOは存在するが応答がない。 00765 # @exception InternalError 内部的エラーが発生した。 00766 # @else 00767 # 00768 # @brief [CORBA interface] Getting a ConfigurationSet 00769 # 00770 # This operation returns the ConfigurationSet specified by the parameter 00771 # configurationSetID. 00772 # 00773 # @param self 00774 # @param config_id Identifier of ConfigurationSet requested. 00775 # 00776 # @return The configuration set specified by the parameter config_id. 00777 # 00778 # @exception SDONotExists if the target SDO does not exist.(This exception 00779 # is mapped to CORBA standard system exception 00780 # OBJECT_NOT_EXIST.) 00781 # @exception InvalidParameter If the parameter 'config_id' is null 00782 # or if there are no ConfigurationSets stored with such id. 00783 # @exception NotAvailable The target SDO is reachable but cannot respond. 00784 # @exception InternalError The target SDO cannot execute the operation 00785 # completely due to some internal error. 00786 # @endif 00787 def get_configuration_set(self, config_id): 00788 self._rtcout.RTC_TRACE("get_configuration_set(%s)", config_id) 00789 if not config_id: 00790 raise SDOPackage.InvalidParameter("ID is empty") 00791 00792 guard = OpenRTM_aist.ScopedLock(self._config_mutex) 00793 00794 try: 00795 if not self._configsets.haveConfig(config_id): 00796 self._rtcout.RTC_ERROR("No such ConfigurationSet") 00797 raise SDOPackage.InternalError("No such ConfigurationSet") 00798 except: 00799 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00800 raise SDOPackage.InternalError("Unknown exception") 00801 00802 00803 configset = self._configsets.getConfigurationSet(config_id) 00804 00805 try: 00806 config = SDOPackage.ConfigurationSet("","",[]) 00807 toConfigurationSet(config, configset) 00808 return config 00809 except: 00810 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00811 raise SDOPackage.InternalError("Configuration::get_configuration_set()") 00812 00813 return SDOPackage.ConfigurationSet("","",[]) 00814 00815 00816 ## 00817 # @if jp 00818 # 00819 # @brief [CORBA interface] ConfigurationSet をセットする 00820 # 00821 # このオペレーションは指定された id の ConfigurationSet を更新する。 00822 # 00823 # @param self 00824 # @param configuration_set 変更する ConfigurationSet そのもの。 00825 # 00826 # @return ConfigurationSet が正常に更新できた場合は true。 00827 # そうでなければ false を返す。 00828 # 00829 # @exception InvalidParameter config_id が null か、 00830 # 指定された id で格納された ConfigurationSetが存在しないか、 00831 # 指定された configuration_set内の属性の1つが不正。 00832 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00833 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00834 # @exception NotAvailable SDOは存在するが応答がない。 00835 # @exception InternalError 内部的エラーが発生した。 00836 # @else 00837 # 00838 # @brief [CORBA interface] Set ConfigurationSet 00839 # 00840 # This operation modifies the specified ConfigurationSet of an SDO. 00841 # 00842 # @param self 00843 # @param configuration_set ConfigurationSet to be replaced. 00844 # 00845 # @return A flag indicating if the ConfigurationSet was modified 00846 # successfully. "true" - The ConfigurationSet was modified 00847 # successfully. "false" - The ConfigurationSet could not be 00848 # modified successfully. 00849 # 00850 # @exception InvalidParameter if the parameter 'configurationSetID' is 00851 # null or if there is no ConfigurationSet stored with such id. 00852 # This exception is also raised if one of the attributes 00853 # defining ConfigurationSet is not valid. 00854 # @exception SDONotExists if the target SDO does not exist.(This exception 00855 # is mapped to CORBA standard system exception 00856 # OBJECT_NOT_EXIST.) 00857 # @exception NotAvailable The target SDO is reachable but cannot respond. 00858 # @exception InternalError The target SDO cannot execute the operation 00859 # completely due to some internal error. 00860 # @endif 00861 def set_configuration_set_values(self, configuration_set): 00862 self._rtcout.RTC_TRACE("set_configuration_set_values()") 00863 if not configuration_set or not configuration_set.id: 00864 raise SDOPackage.InvalidParameter("ID is empty.") 00865 00866 try: 00867 conf = OpenRTM_aist.Properties(key=configuration_set.id) 00868 toProperties(conf, configuration_set) 00869 # ---------------------------------------------------------------------------- 00870 # Because the format of port-name had been changed from <port_name> 00871 # to <instance_name>.<port_name>, the following processing was added. 00872 # (since r1648) 00873 00874 if conf.findNode("exported_ports"): 00875 exported_ports = conf.getProperty("exported_ports").split(",") 00876 exported_ports_str = "" 00877 for i in range(len(exported_ports)): 00878 keyval = exported_ports[i].split(".") 00879 if len(keyval) > 2: 00880 exported_ports_str += keyval[0] + "." + keyval[-1] 00881 else: 00882 exported_ports_str += exported_ports[i] 00883 00884 if i != (len(exported_ports)-1): 00885 exported_ports_str += "," 00886 00887 conf.setProperty("exported_ports",exported_ports_str) 00888 #--------------------------------------------------------------------------- 00889 return self._configsets.setConfigurationSetValues(conf) 00890 except: 00891 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00892 raise SDOPackage.InternalError("Configuration::set_configuration_set_values()") 00893 00894 return True 00895 00896 00897 ## 00898 # @if jp 00899 # 00900 # @brief [CORBA interface] アクティブな ConfigurationSet を取得する 00901 # 00902 # このオペレーションは当該SDOの現在アクティブな ConfigurationSet を返す。 00903 # (もしSDOの現在の設定が予め定義された ConfigurationSet により設定されて 00904 # いるならば。) 00905 # ConfigurationSet は以下の場合にはアクティブではないものとみなされる。 00906 # 00907 # - 現在の設定が予め定義された ConfigurationSet によりセットされていない、 00908 # - SDO の設定がアクティブになった後に変更された、 00909 # - SDO を設定する ConfigurationSet が変更された、 00910 # 00911 # これらの場合には、空の ConfigurationSet が返される。 00912 # 00913 # @param self 00914 # 00915 # @return 現在アクティブな ConfigurationSet。 00916 # 00917 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00918 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00919 # @exception NotAvailable SDOは存在するが応答がない。 00920 # @exception InternalError 内部的エラーが発生した。 00921 # @else 00922 # 00923 # @brief [CORBA interface] Get active ConfigurationSet 00924 # 00925 # This operation returns the current active ConfigurationSet of an 00926 # SDO (i.e., if the current configuration of the SDO was set using 00927 # predefined configuration set). 00928 # ConfigurationSet cannot be considered active if the: 00929 # 00930 # - current configuration of the SDO was not set using any predefined 00931 # ConfigurationSet, or 00932 # - configuration of the SDO was changed after it has been active, or 00933 # - ConfigurationSet that was used to configure the SDO was modified. 00934 # 00935 # Empty ConfigurationSet is returned in these cases. 00936 # 00937 # @param self 00938 # @return The active ConfigurationSet. 00939 # 00940 # @exception SDONotExists if the target SDO does not exist.(This exception 00941 # is mapped to CORBA standard system exception 00942 # OBJECT_NOT_EXIST.) 00943 # @exception NotAvailable The target SDO is reachable but cannot respond. 00944 # @exception InternalError The target SDO cannot execute the operation 00945 # completely due to some internal error. 00946 # @endif 00947 def get_active_configuration_set(self): 00948 self._rtcout.RTC_TRACE("get_active_configuration_set()") 00949 if not self._configsets.isActive(): 00950 raise SDOPackage.NotAvailable("NotAvailable: Configuration.get_active_configuration_set()") 00951 00952 try: 00953 guard = OpenRTM_aist.ScopedLock(self._config_mutex) 00954 config = SDOPackage.ConfigurationSet("","",[]) 00955 toConfigurationSet(config, self._configsets.getActiveConfigurationSet()) 00956 return config 00957 except: 00958 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 00959 raise SDOPackage.InternalError("Configuration.get_active_configuration_set()") 00960 00961 return SDOPackage.ConfigurationSet("","",[]) 00962 00963 00964 ## 00965 # @if jp 00966 # 00967 # @brief [CORBA interface] ConfigurationSet を追加する 00968 # 00969 # ConfigurationProfile に ConfigurationSet を追加するオペレーション。 00970 # 00971 # @param self 00972 # @param configuration_set 追加する ConfigurationSet。 00973 # 00974 # @return オペレーションが成功したかどうか。 00975 # 00976 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 00977 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 00978 # @exception InvalidParameter "configurationSet" が null か、 00979 # "configurationSet"で定義された属性の1つが不正か、 00980 # 指定された configurationSet もIDが既に存在する。 00981 # @exception NotAvailable SDOは存在するが応答がない。 00982 # @exception InternalError 内部的エラーが発生した。 00983 # @else 00984 # 00985 # @brief [CORBA interface] Add ConfigurationSet 00986 # 00987 # This operation adds a ConfigurationSet to the ConfigurationProfile. 00988 # 00989 # @param self 00990 # @param configuration_set The ConfigurationSet that is added. 00991 # 00992 # @return If the operation was successfully completed. 00993 # 00994 # @exception SDONotExists if the target SDO does not exist.(This exception 00995 # is mapped to CORBA standard system exception 00996 # OBJECT_NOT_EXIST.) 00997 # @exception InvalidParameter If the argument "configurationSet" is null, 00998 # or if one of the attributes defining "configurationSet" is 00999 # invalid, or if the specified identifier of the configuration 01000 # set already exists. 01001 # @exception NotAvailable The target SDO is reachable but cannot respond. 01002 # @exception InternalError The target SDO cannot execute the operation 01003 # completely due to some internal error. 01004 # @endif 01005 def add_configuration_set(self, configuration_set): 01006 self._rtcout.RTC_TRACE("add_configuration_set()") 01007 if configuration_set is None: 01008 raise SDOPackage.InvalidParameter("configuration_set is empty.") 01009 01010 try: 01011 guard = OpenRTM_aist.ScopedLock(self._config_mutex) 01012 config_id = configuration_set.id 01013 config = OpenRTM_aist.Properties(key=config_id) 01014 toProperties(config, configuration_set) 01015 return self._configsets.addConfigurationSet(config) 01016 except: 01017 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 01018 raise SDOPackage.InternalError("Configuration::add_configuration_set()") 01019 01020 return True 01021 01022 01023 ## 01024 # @if jp 01025 # 01026 # @brief [CORBA interface] ConfigurationSet を削除する 01027 # 01028 # ConfigurationProfile から ConfigurationSet を削除する。 01029 # 01030 # @param self 01031 # @param config_id 削除する ConfigurationSet の id。 01032 # 01033 # @return オペレーションが成功したかどうか。 01034 # 01035 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 01036 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 01037 # @exception InvalidParameter 引数 "configurationSetID" が null である、 01038 # もしくは、引数で指定された ConfigurationSet が存在しない。 01039 # @exception NotAvailable SDOは存在するが応答がない。 01040 # @exception InternalError 内部的エラーが発生した。 01041 # @else 01042 # 01043 # @brief [CORBA interface] Remove ConfigurationSet 01044 # 01045 # This operation removes a ConfigurationSet from the ConfigurationProfile. 01046 # 01047 # @param self 01048 # @param config_id The id of ConfigurationSet which is removed. 01049 # 01050 # @return If the operation was successfully completed. 01051 # 01052 # @exception SDONotExists if the target SDO does not exist.(This exception 01053 # is mapped to CORBA standard system exception 01054 # OBJECT_NOT_EXIST.) 01055 # @exception InvalidParameter The arguments "configurationSetID" is null, 01056 # or if the object specified by the argument 01057 # "configurationSetID" does not exist. 01058 # @exception NotAvailable The target SDO is reachable but cannot respond. 01059 # @exception InternalError The target SDO cannot execute the operation 01060 # completely due to some internal error. 01061 # @endif 01062 def remove_configuration_set(self, config_id): 01063 self._rtcout.RTC_TRACE("remove_configuration_set(%s)", config_id) 01064 if not config_id: 01065 raise SDOPackage.InvalidParameter("ID is empty.") 01066 01067 try: 01068 guard = OpenRTM_aist.ScopedLock(self._config_mutex) 01069 return self._configsets.removeConfigurationSet(config_id) 01070 except: 01071 self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) 01072 raise SDOPackage.InternalError("Configuration.remove_configuration_set()") 01073 01074 return False 01075 01076 01077 ## 01078 # @if jp 01079 # 01080 # @brief [CORBA interface] ConfigurationSet のアクティブ化 01081 # 01082 # ConfigurationProfile に格納された ConfigurationSet のうち一つを 01083 # アクティブにする。 01084 # このオペレーションは特定の ConfigurationSet をアクティブにする。 01085 # すなわち、SDO のコンフィギュレーション・プロパティがその格納されている 01086 # ConfigurationSet により設定されるプロパティの値に変更される。 01087 # 指定された ConfigurationSet の値がアクティブ・コンフィギュレーション 01088 # にコピーされるということを意味する。 01089 # 01090 # @param self 01091 # @param config_id アクティブ化する ConfigurationSet の id。 01092 # 01093 # @return オペレーションが成功したかどうか。 01094 # 01095 # @exception SDONotExists ターゲットのSDOが存在しない。(本例外は、CORBA標準 01096 # システム例外のOBJECT_NOT_EXISTにマッピングされる) 01097 # @exception InvalidParameter 引数 "config_id" が null である、もしくは 01098 # 引数で指定された ConfigurationSet が存在しない。 01099 # @exception NotAvailable SDOは存在するが応答がない。 01100 # @exception InternalError 内部的エラーが発生した。 01101 # @else 01102 # 01103 # @brief [CORBA interface] Activate ConfigurationSet 01104 # 01105 # This operation activates one of the stored ConfigurationSets in the 01106 # ConfigurationProfile. 01107 # This operation activates the specified stored ConfigurationSets. 01108 # This means that the configuration properties of the SDO are changed as 01109 # the values of these properties specified in the stored ConfigurationSet. 01110 # In other words, values of the specified ConfigurationSet are now copied 01111 # to the active configuration. 01112 # 01113 # @param self 01114 # @param Identifier of ConfigurationSet to be activated. 01115 # 01116 # @return If the operation was successfully completed. 01117 # 01118 # @exception SDONotExists if the target SDO does not exist.(This exception 01119 # is mapped to CORBA standard system exception 01120 # OBJECT_NOT_EXIST.) 01121 # @exception InvalidParameter if the argument ("configID") is null or 01122 # there is no configuration set with identifier specified by 01123 # the argument. 01124 # @exception NotAvailable The target SDO is reachable but cannot respond. 01125 # @exception InternalError The target SDO cannot execute the operation 01126 # completely due to some internal error. 01127 # @endif 01128 def activate_configuration_set(self, config_id): 01129 self._rtcout.RTC_TRACE("activate_configuration_set(%s)", config_id) 01130 if not config_id: 01131 raise SDOPackage.InvalidParameter("ID is empty.") 01132 01133 if self._configsets.activateConfigurationSet(config_id): 01134 return True 01135 else: 01136 raise SDOPackage.InternalError("Configuration.activate_configuration_set()") 01137 01138 return False 01139 01140 01141 #============================================================ 01142 # end of CORBA interface definition 01143 #============================================================ 01144 01145 ## 01146 # @if jp 01147 # 01148 # @brief オブジェクト リファレンスを取得する 01149 # 01150 # 対象のオブジェクトリファレンスを取得する 01151 # 01152 # @param self 01153 # 01154 # @return オブジェクトリファレンス 01155 # 01156 # @else 01157 # 01158 # @endif 01159 def getObjRef(self): 01160 return self._objref 01161 01162 01163 ## 01164 # @if jp 01165 # 01166 # @brief SDO の DeviceProfile を取得する 01167 # 01168 # SDO の DeviceProfile を取得する 01169 # 01170 # @param self 01171 # 01172 # @return SDO の DeviceProfile 01173 # 01174 # @else 01175 # 01176 # @endif 01177 def getDeviceProfile(self): 01178 return self._deviceProfile 01179 01180 01181 ## 01182 # @if jp 01183 # 01184 # @brief SDO の ServiceProfile のリストを取得する 01185 # 01186 # SDO の ServiceProfile のリストを取得する 01187 # 01188 # @param self 01189 # 01190 # @return SDO ServiceProfileリスト 01191 # 01192 # @else 01193 # 01194 # @endif 01195 def getServiceProfiles(self): 01196 return self._serviceProfiles 01197 01198 01199 ## 01200 # @if jp 01201 # 01202 # @brief SDO の ServiceProfile を取得する 01203 # 01204 # このオペレーションは引数 "id" で指定されたSDO の ServiceProfileを返す。 01205 # "id" で指定された ServiceProfileが存在しない場合、 01206 # ServiceProfileのインスタンスを生成し返す。 01207 # 01208 # @param self 01209 # @param id ServiceProfile の識別子。 01210 # 01211 # @return 指定された SDO ServiceProfile 01212 # 01213 # @else 01214 # 01215 # @endif 01216 def getServiceProfile(self, id): 01217 index = OpenRTM_aist.CORBA_SeqUtil.find(self._serviceProfiles, 01218 self.service_id(id)) 01219 01220 if index < 0: 01221 return SDOPackage.ServiceProfile("","",[],None) 01222 01223 return self._serviceProfiles[index] 01224 01225 01226 ## 01227 # @if jp 01228 # 01229 # @brief SDO の Organization リストを取得する 01230 # 01231 # SDO の Organization リストを取得する 01232 # 01233 # @param self 01234 # 01235 # @return SDO の Organization リスト 01236 # 01237 # @else 01238 # 01239 # @endif 01240 def getOrganizations(self): 01241 return self._organizations 01242 01243 01244 ## 01245 # @if jp 01246 # 01247 # @brief UUIDを生成する 01248 # 01249 # UUIDを生成する 01250 # 01251 # @param self 01252 # 01253 # @return 生成したUUID 01254 # 01255 # @else 01256 # 01257 # @endif 01258 def getUUID(self): 01259 return OpenRTM_aist.uuid1() 01260 01261 01262 # functor for NVList 01263 ## 01264 # @if jp 01265 # @class nv_name 01266 # @brief NVList用functor 01267 # @else 01268 # @brief functor for NVList 01269 # @endif 01270 class nv_name: 01271 def __init__(self, name_): 01272 self._name = str(name_) 01273 01274 def __call__(self, nv): 01275 name_ = str(nv.name) 01276 return self._name == name_ 01277 01278 01279 # functor for ServiceProfile 01280 ## 01281 # @if jp 01282 # @class service_id 01283 # @brief ServiceProfile用functor 01284 # @else 01285 # @brief functor for ServiceProfile 01286 # @endif 01287 class service_id: 01288 def __init__(self, id_): 01289 self._id = str(id_) 01290 01291 def __call__(self, s): 01292 id_ = str(s.id) 01293 return self._id == id_ 01294 01295 01296 # functor for Organization 01297 ## 01298 # @if jp 01299 # @class org_id 01300 # @brief Organization用functor 01301 # @else 01302 # @brief functor for Organization 01303 # @endif 01304 class org_id: 01305 def __init__(self, id_): 01306 self._id = str(id_) 01307 01308 def __call__(self, o): 01309 id_ = str(o.get_organization_id()) 01310 return self._id == id_ 01311 01312 01313 # functor for ConfigurationSet 01314 ## 01315 # @if jp 01316 # @class config_id 01317 # @brief ConfigurationSet用functor 01318 # @else 01319 # @brief functor for ConfigurationSet 01320 # @endif 01321 class config_id: 01322 def __init__(self, id_): 01323 self._id = str(id_) 01324 01325 def __call__(self, c): 01326 id_ = str(c.id) 01327 return self._id == id_