LocalService 基底クラス. [詳細]
Public メソッド | |
def | init |
LocalServiceクラスの初期化関数. | |
def | reinit |
LocalServiceクラスの再初期化関数. | |
def | getProfile |
LocalServiceProfile を返す. | |
def | finalize |
終了処理 |
LocalService 基底クラス.
Local Service とは RT-Middlewareのマネージャデーモン内で各種サービ スを提供するための仕組みである。Local Serviceにはいくつかのユース ケースが考えられる。
1. RTCの内部ロジックに対してサービスを提供する。コンポーネントの開 発者は、一定の艇順を経て、Local Serviceのインスタンスへの参照を得 て、このサービスを利用することができる。
2. マネージャ等に機能を追加するためのサービス。たとえは、RTCの名前 を登録するCORBAネームサービスの代わりに、新たなディレクトリサービ スやブロードキャストによる名前通知機能などを新たな機能をマネージャ に追加するために利用することができる。マネージャには、様々なアクショ ンに対するフックが用意されており、これを利用することで、マネージャ の様々なイベントに対してアクションを起こすことができる。
3. マネージャは自身のサービス以外に付加的に外部に対してサービスを 提供する機能を有する。外部からCORBA経由で、ローカルの機能、たとえ ばデバイスやリソースのマネジメント機能に対してアクセスする方法を提 供する。サービスのインスタンス化後に、マネージャに対して、マネージャ サービスとして登録することで、外部からのアクセスを受け付けることが できるようになる。
Local Service はモジュールとしてロードされ、通常唯一のインスタンス が生成される。すなわち、LocalService はシングルトンとして実装され る。インスタンス化されたサービスはサービスリストに登録され、RTC等 からは名前やUUIDによってインスタンスの参照を入手することができる。
このオブジェクトのライフサイクルは以下の通り。
このクラスの実装に当たっては、少なくとも以下の純粋仮想関数を実装す る必要がある。
LocalService は通常共有オブジェクトとしてコンパイル・リンク される。共有オブジェクトのエントリポイントは通常コンパイルされたファ イル名の basename + "Init" にしておく。以下に、クラス名、ファイル 名、エントリポイント関数名の推奨例を示す。
エントリポイント関数は通常以下のように、LocalServiceFactory に当該コンシューマのファクトリ (と解体ファンクタ) を登録する以下の ような関数になる。
extern "C" { void MyLocalServiceInit() { RTC.LocalServiceFactory& factory = RTC.LocalServiceFactory.instance(); factory.addFactory(RTC.MyLocalSerivce.name, coil.Creator< RTC.LocalServiceBase, RTC.MyLocalService>, coil.Destructor< RTC.LocalServiceBase, RTC.MyLocalService>); } };
def OpenRTM_aist.LocalServiceBase.LocalServiceBase.finalize | ( | self | ) |
終了処理
LocalService が終了する際に呼び出される終了処理用関数。当該オブ ジェクトが保持するリソースを解放するなどの処理を行う。
virtual void finalize() = 0;
def OpenRTM_aist.LocalServiceBase.LocalServiceBase.getProfile | ( | self | ) |
LocalServiceProfile を返す.
init()/reinit()で与えられた LocalServiceProfile は通常オブジェク ト内で保持される。この関数では保持されている ServiceProfile を返 す。
virtual const LocalServiceProfile& getProfile() const = 0;
def OpenRTM_aist.LocalServiceBase.LocalServiceBase.init | ( | self, | ||
props | ||||
) |
LocalServiceクラスの初期化関数.
このオブジェクトの初期化を行う。LocalService を実装する場合、外 部からの設定情報は、このinit()関数により与えられる。
profile | 外部から与えられた LocalServiceProfile |
virtual bool init(const coil.Properties& props) = 0;
def OpenRTM_aist.LocalServiceBase.LocalServiceBase.reinit | ( | self, | ||
props | ||||
) |
LocalServiceクラスの再初期化関数.
TODO: ドキュメント作成
profile | 新たに与えられた LocalServiceProfile |
virtual bool reinit(const coil.Properties& props) = 0;