Compartir a través de


Búsqueda de una tabla de enrutamiento distribuido

Para que una aplicación pueda buscar en la tabla de enrutamiento distribuido (DRT), se debe crear una consulta de búsqueda. La aplicación especifica el valor de clave deseado cuando se llama a la función DrtStartSearch . El comportamiento de la búsqueda viene determinado por la información especificada por la aplicación en la estructura DRT_SEARCH_INFO .

Normalmente, se señala un evento de aplicación cuando la búsqueda detecta resultados y otro en la conclusión de la búsqueda. Sin embargo, si fIterative se establece en DRT_SEARCH_INFO, se puede señalar un evento de aplicación cuando se realiza contacto con cada nodo a lo largo del camino.

Una vez que se señala un evento, la aplicación llama a la función DrtGetSearchResult para los resultados. Si el código devuelto es S_OK, los resultados se señalan en la estructura DRT_SEARCH_RESULT devuelta por la API. Los resultados devueltos se dividen en el intervalo de valores especificados en DRT_SEARCH_INFO. En caso de que la búsqueda no encuentre ninguna coincidencia, solo se devolverá el valor de DRT_E_NO_MORE en la conclusión de los resultados.

La siguiente información detalla cómo los miembros contenidos en DRT_SEARCH_INFO permiten a una aplicación dictar específicamente el comportamiento de búsqueda de la infraestructura de DRT:

fAllowCurrentInstanceMatch

De forma predeterminada, los resultados de búsqueda drt incluyen solo coincidencias encontradas fuera del nodo local. Al establecer fAllowCurrentInstanceMatch , se especifica que los resultados de búsqueda también incluyen coincidencias encontradas en la instancia de DRT local.

cMaxEndpoints

La cantidad y el intervalo de los resultados devueltos por la búsqueda se especifican en la aplicación con los valores cMaxEndpoints (quantity) y pMinimumKey y pMaximumKey (range) y a los que hace referencia DRT_SEARCH_INFO.

Cuando cMaxEndpoints = 1, la infraestructura de DRT busca una clave y devuelve una coincidencia dentro del intervalo especificado por los valores pMinimumKey y pMaximumKey en DRT_SEARCH_INFO. Esta coincidencia puede ser una coincidencia exacta o la coincidencia más cercana dentro del intervalo. Si no se encuentra una coincidencia, se devuelve DRT_E_NO_MORE .

Si cMaxEndpoints > 1, la infraestructura drt devolverá coincidencias dentro del intervalo hasta el valor de cMaxEndpoints. Las coincidencias devueltas pueden contener una coincidencia exacta o los resultados de coincidencia más cercanos dentro del intervalo. Además, si pMinimumKey y pMaximumKey se establecen en el mismo valor, solo se realiza una búsqueda para ese valor, devolviendo DRT_E_NO_MORE si no se encuentra.

fAnyMatchInRange

El miembro fAnyMatchInRange indica si la búsqueda se detendrá después de que la primera coincidencia se encuentre dentro del intervalo especificado, o si la búsqueda continuará con la coincidencia más cercana a la clave especificada en la API DrtStartSearch . Cuando se establece fAnyMatchInRange , la búsqueda se realiza con cMaxEndpoints = 1 independientemente del valor especificado de cMaxEndpoints en DRT_SEARCH_INFO.

fIterative

El miembro fIterative especifica si cada nodo contactado por la infraestructura de DRT durante la búsqueda tendrá los datos de clave o punto de conexión asociados a él disponibles para la aplicación a través de DRT_SEARCH_RESULT. Al establecer fIterative en TRUE, se forzará el valor de cMaxEndpoints = 1 . Cuando fIterative se establece en TRUE dentro de una consulta de búsqueda para el DRT, se llama a la aplicación después de ponerse en contacto con cada nodo o "salto". Cada resultado del salto contiene una clave que indica qué nodo buscará el DRT a continuación. Un resultado de salto se devuelve a través de DrtGetSearchResult como resultado de DRT_MATCH_INTERMEDIATE .

pMinimumKey y pMaximumKey

Los miembros pMinimumKey y pMaximumKey se pueden usar para buscar claves que se encuentran dentro de un intervalo. Si el miembro fAnyMatchInRange se establece en FALSE, el DRT devolverá las claves más cercanas al destino de búsqueda (especificado mediante el argumento pKey pasado en la función DrtStartSearch ) que se encuentra dentro del intervalo. Tenga en cuenta que el argumento pKey pasado a DrtStartSearch debe estar dentro del intervalo definido por pMinimumKey y pMaximumKey. Para buscar una clave precisa, establezca pMinimumKey, pMaximumKey y pKey en el mismo valor.

Registro y anulación del registro de claves

Acerca de las tablas de enrutamiento distribuido

Referencia de Table API de enrutamiento distribuido