分散ルーティング テーブルの検索
アプリケーションで分散ルーティング テーブル (DRT) を検索する前に、検索クエリを作成する必要があります。 DrtStartSearch 関数が呼び出されたときに、アプリケーションによって目的のキー値が指定されます。 検索の動作は、 DRT_SEARCH_INFO 構造でアプリケーションによって指定された情報によって決まります。
通常、アプリケーション イベントは、検索が結果を検出し、検索の終了時に別のイベントが検出されると通知されます。 ただし、DRT_SEARCH_INFOで fIterative が設定されている場合は、途中で各ノードとの接触が行われたときにアプリケーション イベントを通知できます。
イベントが通知された後、アプリケーションは結果に対して DrtGetSearchResult 関数を呼び出します。 返されたコードが S_OK場合、結果は API によって返される DRT_SEARCH_RESULT 構造体で指されます。 返される結果は、 DRT_SEARCH_INFOで指定された値の範囲に分類されます。 検索で一致が見つからない場合は、結果の終了時に DRT_E_NO_MORE 値のみが返されます。
次の情報では、 DRT_SEARCH_INFO に含まれるメンバーによって、アプリケーションが DRT インフラストラクチャの検索動作を具体的に決定できるようにする方法について詳しく説明します。
fAllowCurrentInstanceMatch
既定では、DRT 検索結果には、ローカル ノードの外部で見つかった一致のみが含まれます。 fAllowCurrentInstanceMatch を設定すると、検索結果にローカル DRT インスタンスで見つかった一致も含まれることが指定されます。
cMaxEndpoints
検索によって返される結果の数量と範囲は、 アプリケーションで cMaxEndpoints (quantity) と pMinimumKey と pMaximumKey (range) の値で指定され、 DRT_SEARCH_INFOによって参照されます。
cMaxEndpoints = 1 の場合、DRT インフラストラクチャはキーを検索し、DRT_SEARCH_INFOの pMinimumKey 値と pMaximumKey 値で指定された範囲内で 1 つの一致を返します。 この一致は、完全一致または範囲内の最も近い一致のいずれかになります。 一致するものが見つからない場合は、 DRT_E_NO_MORE が返されます。
cMaxEndpoints 1 の>場合、DRT インフラストラクチャは cMaxEndpoints の値までの範囲内の一致を返します。 返される一致には、完全一致または範囲内の最も近い一致結果を含めることができます。 さらに、 pMinimumKey と pMaximumKey が同じ値に設定されている場合、その値に対してのみ検索が実行され、見つからない場合は DRT_E_NO_MORE が返されます。
fAnyMatchInRange
fAnyMatchInRange メンバーは、最初の一致が指定された範囲内にある後に検索を停止するか、DrtStartSearch API で指定されたキーに最も近い一致を検索し続けるかを示します。 fAnyMatchInRange を設定すると、DRT_SEARCH_INFOの cMaxEndpoints の指定値に関係なく、cMaxEndpoints= 1 で検索が実行されます。
fIterative
fIterative メンバーは、検索中に DRT インフラストラクチャから接続された各ノードに、キー/エンドポイント データが関連付けられているかどうかを指定し、DRT_SEARCH_RESULT経由でアプリケーションで使用できるようにします。 fIterative を TRUE に設定すると、cMaxEndpoints = 1 の値が強制されます。 DRT の検索クエリ内で fIterative が TRUE に設定されている場合、アプリケーションは各ノードまたは "ホップ" と接触した後に呼び出されます。各ホップの結果には、DRT が次に検索するノードを示すキーが含まれています。 ホップの結果は、DRT_MATCH_INTERMEDIATEの結果として DrtGetSearchResult 経由で返されます。
pMinimumKey と pMaximumKey
pMinimumKey メンバーと pMaximumKey メンバーを使用して、範囲内にあるキーを検索できます。 fAnyMatchInRange メンバーが FALSE に設定されている場合、DRT は、範囲内にある検索ターゲットに最も近いキー (DrtStartSearch 関数で渡された pKey 引数を使用して指定) を返します。 DrtStartSearch に渡される pKey 引数は、pMinimumKey および pMaximumKey によって定義された範囲内に含まれている必要があります。 正確なキーを検索するには、 pMinimumKey、 pMaximumKey 、 pKey を同じ値に設定します。
関連トピック