プロジェクト

全般

プロフィール

機能 #4107

スレーブマネージャがマスターマネージャが存在するか定期的に確認する機能

n-miyamotoほぼ7年前に追加. 6年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2017/05/30
期日:
進捗率:

100%

予定工数:

説明

スレーブマネージャ起動時にマスターマネージャが起動していない、もしくは途中で通信できなくなった場合に、周期的にマスターマネージャの存在確認を行い存在する場合はマスターマネージャの登録を行う機能を実装する。


関連するチケット

関連している OpenRTM-aist (Java) - 機能 #4188: スレーブマネージャがマスターマネージャが存在するか定期的に確認する機能担当2017-09-08

関係しているリビジョン

リビジョン 831 (差分)
miyamotoほぼ7年前に追加

[incompat,new func,->RELENG_1_2] refs #4107

履歴

#1 n-miyamotoほぼ7年前に更新

  • ステータス新規 から 解決 に変更
  • 進捗率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())

#2 n-ando6年以上前に更新

  • ステータス解決 から 終了 に変更

#3 katami が6年以上前に更新

  • 関連している 機能 #4188: スレーブマネージャがマスターマネージャが存在するか定期的に確認する機能 を追加

他の形式にエクスポート: Atom PDF