2011年6月19日日曜日

Sharing Devices between Applications and Locking Nodes

ほとんどのケースでは、OpenNIのnodeが生成するデータは、ハードウェアデバイスからやってきます。
ハードウェアデバイスは、1つ以上の設定(コンフィグレーション)を設定できます。
ゆえに、いくつかのアプリケーションが同時に同じデバイスを使用する場合、
その設定(コンフィグレーション)は同期されなければなりません。
しかし、通常、アプリケーションを書いているときに、他のどんなアプリケーションが同時実行されるのか知ることはできないので、設定の同期は不可能です。
加えて、アプリケーションが、ある特定の設定を必要とし、他の設定ではアプリケーションが正常に動作しない場合もあります。

OpenNIでは、複数のアプリケーションがハードウェアデバイスを共有するための2つのモードを用意しています。

・Full Sharing(default)
このモードでは、アプリケーションは設定ハンドラを宣言します。
OpenNIインターフェースは、設定変更時に呼ばれるコールバック関数を登録できるようにします。
これにより、設定変更時にはアプリケーションは通知を受け取ることができます。
(設定を変更したのがアプリケーション自身であっても、他のアプリケーションであっても通知を受け取ります。)

・Locking Configuration
このモードでは、アプリケーションは、あるNodeの現在の設定をロックする要求を発行します。
このため、このモードでは、OpenNIは「Set」関数の呼び出しを許可しません。
nodeがハードウェアデバイスである場合(または、プロセス境界を越えて共有されるようなオブジェクトの場合)、nodeは「Lock Aware」capabilityをサポートする必要があります。
「Lock Aware」capabilityは、プロセス境界を越えてロックする能力を意味します。


nodeがロックされた場合、ロックしたアプリケーションはロックハンドルを受け取ります。
nodeをアンロックすることに加えて、このハンドルは、ロックを解除することなしに、設定を変更することを可能にします。
(他のアプリケーションに設定を盗まれないようにするためです。)

0 件のコメント:

コメントを投稿