Manager.idlにget_components_by_nameを追加した。
これに伴い、ManagerServantクラスにget_components_by_name関数を追加した。
get_components_by_name関数では、指定したカテゴリ名、インスタンス名のRTCを検索してオブジェクトリファレンスのリストを返す。
以下の形式で名前が指定可能
カテゴリ名/インスタンス名
*/インスタンス名
インスタンス名
また名前解決クラスとしてNamingOnManagerクラスを実装した。
NamingOnManagerクラスはNamingBaseクラスを継承している。
NamingOnManagerクラスにはrtcloc形式の名前からRTCのオブジェクトリファレンスを取得するstring_to_component関数を実装している。
NamingOnManagerクラスのstring_to_component関数では、指定したホストのマネージャのオブジェクトリファレンスをcorbaloc形式で取得し、取得したマネージャ及びスレーブマネージャからget_components_by_name関数でRTCのオブジェクトリファレンスを取得している。
NamingManagerクラスにstring_to_component関数を実装した。
NamingManagerクラスのstring_to_component関数では、登録されたNamingOnManagerオブジェクトのstring_to_component関数を呼び出して名前からRTCのオブジェクトリファレンスを取得する。
また以下のコードでテストを行った。
rtc = self.manager._namingManager.string_to_component("rtcloc://localhost:2810/example/TestComp20")
name = rtc[0].get_component_profile().instance_name
self.assertEqual(name,"TestComp20")