Actions
機能 #990
closed相手Port死亡時の自動接続解除機能
Status:
終了
Priority:
通常
Assignee:
-
Target version:
-
Start date:
11/19/2009
Due date:
% Done:
100%
Estimated time:
Description
- get_port_profile
- get_connector_profile
- get_connector_profilesが呼ばれた際に、自分が保持しているPortProfile内の
に、ConnectorProfileListをチェックして、死んでいるポートがあれば、
disconnectを呼ぶロジックを追加する。
接続しているかの状態を知り、かつ相手が死んでいた場合それを
disconnectする必要があるケースというのは、
- 相手のポートのサービスオペレーションを呼ぶ場合
- これはOutPort ではInPort::put() を呼んでCOMM_FAILUR が帰った場合 disconnect する、これまでの方法。OutPort::get() でも同様のことを行うべき。
サービスポートについては、フレームワーク的にこれを検知する方法が思いつかないので、従来通りユーザに任せることにします。
- これはOutPort ではInPort::put() を呼んでCOMM_FAILUR が帰った場合 disconnect する、これまでの方法。OutPort::get() でも同様のことを行うべき。
- コネクタを取得して、接続リストを調査する場合
- RTSEにおいて、接続線はget_port_profile から取得するConnectorProfileList により1秒おきにチェックされ描画が更新されています。つまり、get_port_profile 等のオペレーションが呼ばれるまでは、外部からは接続状態を知りえないので、そのタイミングで接続に関わるポートを調査すれば十分だということになります。
詳細は、C++版r1572のコミットを参照。
Updated by Anonymous about 15 years ago
PortBase実装後に下記のテストを実施して、接続情報が残っていないことをRTSEにて確認。
- ConsoleIn,ConsoleOutを接続し、ConsoleIn側を異常終了(RTCを実行したターミナルを終了)させ、ConsoleOut側に接続情報が残っていないことを確認。
- ConsoleIn,ConsoleOutを接続し、ConsoleOut側を異常終了させ、ConsoleIn側に接続情報が残っていないことを確認。
- MyServiceProvider,MyServiceConsumerを接続し、MyServiceProvider側を異常終了させ、MyServiceConsumer側に接続情報が残っていないことを確認。
- MyServiceProvider,MyServiceConsumerを接続し、MyServiceConsumer側を異常終了させ、MyServiceProvider側に接続情報が残っていないことを確認。
Updated by Anonymous almost 15 years ago
Actions