[openrtm-users 00823] Port 関連の実装に関して

Masayuki Shimizu masayuki.shimizu @ aist.go.jp
2009年 6月 8日 (月) 23:38:00 JST


OpenRTM-aist開発者の皆様

Port関連の実装に関して気づいた点です。

PortのCORBAオブジェクトは
PortBaseクラスでimplicit activationされていますが、
同じクラス内でdeactivationされていません。
なぜか、PortAdminクラスでdeactivateされています。
(PortAdminで管理されない場合はどうするのでしょうか)

オブジェクト指向的には、クラス単位で完結していることが
望ましいので、PortBaseでactivationしたのであれば、
そのクラスでdeactivateもすべきと考えるのですが、
どうでしょうか。
(同じことは他のCOBRAオブジェクトにも言えます)

これに関連するのですが、PortAdminの仕事の範囲は、
(activate済みの)Portオブジェクトを管理するだけでなく、
Portオブジェクトのactivate/deactivateまで
もカバーする、という設計でしょうか。
(その場合でも、Portオブジェクトのactivate処理
はないので、完備性の観点からは問題があると思いますが)
私としては、PortAdminクラスは、
activate済みのPortオブジェクトを管理するだけに
絞った方がわかりやすいと感じます。

上述のPortオブジェクトのactivate/deactivate管理の
役割分担があいまいなために、RTObjectでのPortの操作も
わかりにくいと感じました。
具体的には、Data PortをRTCに登録するときは、
registerInPort/registerOutPortを呼ぶのに、
この逆の操作はdeletePortとなっている点です。
unregiterInPort/unregisterOutPortの方が
わかりやすいのではないでしょうか。

さらに、PortをRTCに登録する場合は
Portオブジェクトはactivationされないのに、
登録解除の際は自動的にdeactivateされてしまうのは、
ユーザからはわかりにくいし不便な場合もあるかと思います。
(稀なケースとは思いますが、Portオブジェクトを
他のRTCに移譲する場合とか。)
また、確か、RTC仕様上はPortオブジェクト単独で存在する
ことも可能だったと思うので、RTCまたはPortAdminに
依存する現在のPort実装は少し問題があるのではと感じます。

以上、気づいた点です。
ご検討頂ければ幸いです。

静岡大 清水

--------------------
Masayuki Shimizu
Assistant Professor
Dept. of Mechanical Engineering, Shizuoka Univ.
3-5-1, Johoku, Naka-ku, Hamamatsu 432-8561, JAPAN
TEL/FAX: +81-53-478-1061
Email: tmsimiz @ ipc.shizuoka.ac.jp



openrtm-users メーリングリストの案内