操作
機能 #4107
完了スレーブマネージャがマスターマネージャが存在するか定期的に確認する機能
開始日:
2017/05/30
期日:
進捗率:
100%
予定工数:
説明
スレーブマネージャ起動時にマスターマネージャが起動していない、もしくは途中で通信できなくなった場合に、周期的にマスターマネージャの存在確認を行い存在する場合はマスターマネージャの登録を行う機能を実装する。
操作
n-miyamoto さんが7年以上前に追加. 7年以上前に更新.
100%
説明
スレーブマネージャ起動時にマスターマネージャが起動していない、もしくは途中で通信できなくなった場合に、周期的にマスターマネージャの存在確認を行い存在する場合はマスターマネージャの登録を行う機能を実装する。
スレーブマネージャがマスターマネージャを定期的に確認するかどうかは以下の項目で設定できるようにしました。
corba.update_master_manager.enable: YES
デフォルトではYESになっています。
また、確認する周期は以下の項目で設定できます。
corba.update_master_manager.interval: 10.0
デフォルトは10.0にしています。
マスターマネージャが既に登録されている場合でも、オブジェクトが存在しない場合はリストからオブジェクトを削除してマスターマネージャの存在確認を再度行います。
def update_master_manager(self): if not self._isMaster and self._objref: guard = OpenRTM_aist.ScopedLock(self._masterMutex) if len(self._masters) > 0: for master in self._masters[:]: try: if master._non_existent(): self._masters.remove(master) except: self._rtcout.RTC_ERROR("Unknown exception cought.") self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception()) self._masters.remove(master) del guard if len(self._masters) == 0: try: config = self._mgr.getConfig() owner = self.findManager(config.getProperty("corba.master_manager")) if not owner: self._rtcout.RTC_INFO("Master manager not found") return self.add_master_manager(owner) owner.add_slave_manager(self._objref) return except: self._rtcout.RTC_ERROR("Unknown exception cought.") self._rtcout.RTC_ERROR(OpenRTM_aist.Logger.print_exception())