次の方法で共有


メソッドの使用

クライアントがルーティング テーブル マネージャーに登録すると、一連のメソッドをエクスポートできます。 これらのメソッドは、クライアント固有の情報を取得するために他のクライアントによって使用されます。 メソッドを使用すると、ルーティング テーブル マネージャーのクライアント間のプライベート通信が可能になります。

クライアントは、別のクライアントによってエクスポートされたメソッドの一覧を取得できます。 クライアントは RtmGetEntityMethods 関数を呼び出し、ターゲット クライアントのハンドルを指定します。

クライアントによってエクスポートされた各メソッドは、そのメソッド識別子によって一意に識別されます。 各クライアントは、最大 32 個のメソッドをエクスポートできます。 各メソッドは、RTM_ENTITY_EXPORT_METHOD構造体の MethodType メンバーのビット セットに対応します。 複数のメソッドを呼び出すには、クライアントでこれらのメソッドの識別子の論理 OR を実行する必要があります。 プロトコルの実装時には、各プロトコルの入出力構造の構文とセマンティクスを指定する必要があります。

Note

MethodType メンバーの下半分 (下位 16 ビット) で設定されたビットに対応するメソッド識別子の値は、Microsoft によって予約されています。

 

2 番目のクライアントのメソッドを呼び出すには、クライアントは RtmInvokeMethod 関数を呼び出します。 ルーティング テーブル マネージャーは、クライアントのメソッドを呼び出すためにすべての要求を裁定します。 ルーティング テーブル マネージャーは、クライアント間でアービトレーションを行うときに、次の 2 つの機能を実行します。

  • 2 番目のクライアントが、登録を解除しているクライアントのメソッドを呼び出さないようにします。
  • メソッドがブロックされたときに "呼び出し" 要求を保持し、メソッドのブロックが解除されたときに要求を続行できるようにします。

クライアントが他のクライアントがメソッドを実行できないようにする必要がある場合、クライアントは RtmBlockMethods を呼び出すことができます。 ルーティング テーブル マネージャーでは、クライアントがメソッドのブロックを解除するまで 、RtmInvokeMethod の呼び出しを処理することはできません。

通常、クライアントは、クライアント間で交換されるプライベート データを変更するときにメソッドをブロックします。 ブロッキング メソッドは省略可能なアクションです。 また、クライアントは内部ロックを使用して、他のクライアントがメソッドを呼び出さないようにすることもできます。

これらの関数の使用方法を示すサンプル コードについては、「 クライアントのエクスポートされたメソッドを取得および呼び出す」を参照してください。