江口様
安藤です
お世話になっております。
> 初めて投稿させていただきます、内田洋行 江口と申します。
>
> 私の実行環境のRTMバージョンは、OpenRTM-aist-0.2.0
> OSは、Fedora Core 4です。
>
> 現在、一つのRTコンポーネントから複数のネームサーバに登録を行いたいと考え
> ているのですが、方法をご存知の方がいらっしゃいましたらアドバイスをいただ
> けませんでしょうか?
>
> 具体的には、RTコンポーネントの起動時に一つのネームサーバに登録を行うよう
> にしたときに、同じネットワークに新しいネームサーバがたった場合に、ネーム
> サーバの登録を古いサーバから新しいサーバに変えたいと考えております。
現状のRtcManagerにはそのような機能はありませんので、
ご自分で実装していただくしかありませんが、まもなくリリースする0.4.0では
複数のネームサーバを利用でき、かつrtc.confに記述されているネームサーバが
コンポーネント起動時点で動いていなくても、Managerが定期的にネームサーバが
起動しているかどうか見に行き、起動したら、それまで登録されていたコンポーネント
を全て新しいネームサーバに登録するようになっています。
ご希望の機能は、こういったものでよろしいでしょうか?
他に必要な機能がありましたらお知らせください。
余裕がありましたら実装したいと思います。
参考までに、その部分の0.4.0のソースをお送りいたします。
ただ、これを0.2.0のマネージャに組み込むのは少し面倒かもしれません。
もし組み込む場合は、NamingManagerクラスのupdate()を定期的に呼んでください。
なお、すでに存在しているネームサーバがなくなったときの処理はまだ書いていない
ので、その場合に新たに名前を登録しようとするとおそらく落ちます(笑
処理の概要は以下のとおりです。
CorbaNaming クラスはCORBA::ORB::resolve_initial_referenceではなく、
CORBA::ORB::string_to_objectを使用してネームサーバのオブジェクト参照を
取得し、参照やコンテキストのバインド・アンバインドを行います。
(なので、複数のNSを使用することができます。)
NamingManagerはCorbaNamingのインスタンスを複数作成・管理しており、
NamingManager::bindObjectで管理下にあるCorbaNamingを通して、
コンポーネントのバインドを行うと同時に、コンポーネントの名前とポインタを保存します。
update()を呼び出すと、未接続のCorbaNamingに対し、再度接続を試みて
接続できれば、NamingManagerに保存されているコンポーネントを
登録しに行くという流れです。
なお、OpenRTM-aist-0.4.0は4月中にはリリースしたいと考えております。
リリース時にはこのメーリングリストでも改めてお知らせいたします。
また、4月末か5月初めに産総研で、また5月の秋田のROBOMECで、
0.4.0を対象とした講習会も行う予定です。(まだ予定ですが。)
講習会についても日程等が決まりましたらこのMLでお知らせいたします。
どうぞよろしくお願いいたします。
初めて投稿させていただきます、内田洋行 江口と申します。
私の実行環境のRTMバージョンは、OpenRTM-aist-0.2.0
OSは、Fedora Core 4です。
現在、一つのRTコンポーネントから複数のネームサーバに登録を行いたいと考え
ているのですが、方法をご存知の方がいらっしゃいましたらアドバイスをいただ
けませんでしょうか?
具体的には、RTコンポーネントの起動時に一つのネームサーバに登録を行うよう
にしたときに、同じネットワークに新しいネームサーバがたった場合に、ネーム
サーバの登録を古いサーバから新しいサーバに変えたいと考えております。
説明が下手で申し訳ありませんが、よろしくお願いします。