操作
機能 #4107
完了スレーブマネージャがマスターマネージャが存在するか定期的に確認する機能
開始日:
2017/05/30
期日:
進捗率:
100%
予定工数:
説明
スレーブマネージャ起動時にマスターマネージャが起動していない、もしくは途中で通信できなくなった場合に、周期的にマスターマネージャの存在確認を行い存在する場合はマスターマネージャの登録を行う機能を実装する。
n-miyamoto さんが8年以上前に更新
- ステータス を 新規 から 解決 に変更
- 進捗率 を 0 から 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())
操作