プロジェクト

全般

プロフィール

機能 #990

相手Port死亡時の自動接続解除機能

n-ando14年以上前に追加. 約14年前に更新.

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

100%

予定工数:

説明

  • get_port_profile
  • get_connector_profile
  • get_connector_profilesが呼ばれた際に、自分が保持しているPortProfile内の
    に、ConnectorProfileListをチェックして、死んでいるポートがあれば、
    disconnectを呼ぶロジックを追加する。

接続しているかの状態を知り、かつ相手が死んでいた場合それを
disconnectする必要があるケースというのは、

  1. 相手のポートのサービスオペレーションを呼ぶ場合
    • これはOutPort ではInPort::put() を呼んでCOMM_FAILUR が帰った場合 disconnect する、これまでの方法。OutPort::get() でも同様のことを行うべき。
         サービスポートについては、フレームワーク的にこれを検知する方法が思いつかないので、従来通りユーザに任せることにします。
  1. コネクタを取得して、接続リストを調査する場合
    • RTSEにおいて、接続線はget_port_profile から取得するConnectorProfileList により1秒おきにチェックされ描画が更新されています。つまり、get_port_profile 等のオペレーションが呼ばれるまでは、外部からは接続状態を知りえないので、そのタイミングで接続に関わるポートを調査すれば十分だということになります。

詳細は、C++版r1572のコミットを参照。


関連するチケット

関連している OpenRTM-aist (Python) - 機能 #991: 相手Port死亡時の自動接続解除機能終了2009-11-19

履歴

#1 匿名ユーザー が14年以上前に更新

PortBase実装後に下記のテストを実施して、接続情報が残っていないことをRTSEにて確認。

  1. ConsoleIn,ConsoleOutを接続し、ConsoleIn側を異常終了(RTCを実行したターミナルを終了)させ、ConsoleOut側に接続情報が残っていないことを確認。
  2. ConsoleIn,ConsoleOutを接続し、ConsoleOut側を異常終了させ、ConsoleIn側に接続情報が残っていないことを確認。
  3. MyServiceProvider,MyServiceConsumerを接続し、MyServiceProvider側を異常終了させ、MyServiceConsumer側に接続情報が残っていないことを確認。
  4. MyServiceProvider,MyServiceConsumerを接続し、MyServiceConsumer側を異常終了させ、MyServiceProvider側に接続情報が残っていないことを確認。

#2 匿名ユーザー が14年以上前に更新

  • 進捗率0 から 100 に変更

#3 匿名ユーザー が14年以上前に更新

  • ステータス新規 から 解決 に変更

#4 n-ando約14年前に更新

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

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