次の方法で共有


マルチポイント リーフを結合するための SPI セマンティクス

以下では、多くの場合、マルチポイント ソケットは、2 つのプレーン (コントロールまたはデータ) のいずれかでその役割を記述することを特徴とします。 この同じソケットが他のプレーンにロールを持っていることを理解する必要がありますが、これは参照を短く保つために言及されていません。 たとえば、c_root ソケットへの参照は、c_root/d_rootまたはc_root/d_leaf ソケットを参照できます。

ルート化されたコントロール プレーン スキームでは、新しいリーフ ノードが 2 つの異なる方法の一方または両方でマルチポイント セッションに追加されます。 最初のメソッドでは、ルートは WSPJoinLeaf を使用してリーフ ノードとの接続を開始し、参加要素になるように招待します。 リーフ ノードでは、ピア アプリケーションが c_leaf ソケットを作成し、 WSPListen を使用してリッスン モードに設定している必要があります。 リーフ ノードは、セッションへの参加を招待されるとFD_ACCEPT表示を受け取り、 WSPAccept を呼び出して参加する意思を示します。 ルート アプリケーションは、結合操作が完了したときにFD_CONNECT表示を受け取ります。

2 番目の方法では、ロールは基本的に逆になります。 ルート クライアントは、c_root ソケットを作成し、リッスン モードに設定します。 セッションに参加するリーフ ノードは、c_leaf ソケットを作成し、 WSPJoinLeaf を使用して接続を開始し、許可を要求します。 ルート クライアントは、受信したアドミタンス要求が到着したときにFD_ACCEPTを受信し、 WSPAccept を呼び出してリーフ ノードを許可します。 リーフ ノードは、許可されるとFD_CONNECTを受け取ります。

すべてのノードがc_leafsされる非ルートコントロール プレーンでは、 WSPJoinLeaf 関数を使用して、既存のマルチポイント セッションへのノードの包含を開始します。 結合が完了し、返されたソケット記述子がマルチポイント セッションで使用できる場合は、FD_CONNECT表示が提供されます。 IP マルチキャストの場合、これは IP_ADD_MEMBERSHIP ソケット オプションに対応します。

そのため、クライアントが WSPJoinLeaf を使用するインスタンスは 3 つあります。

  • マルチポイント ルートとして機能し、新しいリーフを招待してセッションに参加させる。
  • ルート化されたマルチポイント セッションに対するアドミタンス要求を行うリーフとして機能します。
  • 非ルート マルチポイント セッションへのアドミタンスをシークするリーフとして機能する (IP マルチキャストなど)。