Condividi tramite


Ricerca in una tabella di routing distribuita

Prima che un'applicazione possa eseguire una ricerca nella tabella di routing distribuita (DRT), è necessario creare una query di ricerca. Il valore della chiave desiderato viene specificato dall'applicazione quando viene chiamata la funzioneDrtStartSearch. Il comportamento della ricerca è determinato dalle informazioni specificate dall'applicazione nella struttura DRT_SEARCH_INFO.

In genere, un evento dell'applicazione viene segnalato quando la ricerca individua i risultati e un'altra alla conclusione della ricerca. Tuttavia, se fIterative è impostato in DRT_SEARCH_INFO, è possibile segnalare un evento dell'applicazione quando viene effettuato un contatto con ogni nodo durante il percorso.

Dopo la segnalazione di un evento, l'applicazione chiama quindi la funzioneDrtGetSearchResultper i risultati. Se il codice restituito è S_OK, i risultati vengono puntati nella struttura DRT_SEARCH_RESULT restituita dall'API. I risultati restituiti rientrano nell'intervallo di valori specificati in DRT_SEARCH_INFO. Nel caso in cui la ricerca non trovi corrispondenze, verrà restituito solo il valore DRT_E_NO_MORE alla fine della restituzione dei risultati.

Le informazioni seguenti illustrano in dettaglio il modo in cui i membri contenuti in DRT_SEARCH_INFO consentono a un'applicazione di determinare in modo specifico il comportamento di ricerca dell'infrastruttura DRT:

fAllowCurrentInstanceMatch

Per impostazione predefinita, i risultati della ricerca DRT includono solo corrispondenze trovate all'esterno del nodo locale. L'impostazione fAllowCurrentInstanceMatch specifica che i risultati della ricerca includono anche corrispondenze trovate nell'istanza DRT locale.

cMaxEndpoints

La quantità e l'intervallo dei risultati restituiti dalla ricerca vengono specificati dall'applicazione con i valori cMaxEndpoints (quantità) e il pMinimumKey e valori pMaximumKey (intervallo) e a cui fa riferimento DRT_SEARCH_INFO.

Quando cMaxEndpoints = 1, l'infrastruttura DRT cerca una chiave, restituendo una corrispondenza all'interno dell'intervallo specificato dal pMinimumKey e pMaximumKey valori in DRT_SEARCH_INFO. Questa corrispondenza può essere una corrispondenza esatta o la corrispondenza più vicina all'interno dell'intervallo. Se non si trova una corrispondenza, viene restituito DRT_E_NO_MORE.

Se cMaxEndpoints > 1, l'infrastruttura DRT restituirà corrispondenze all'interno dell'intervallo fino al valore di cMaxEndpoints. Le corrispondenze restituite possono contenere una corrispondenza esatta o i risultati di corrispondenza più vicini all'interno dell'intervallo. Inoltre, se pMinimumKey e pMaximumKey vengono impostati sullo stesso valore, viene eseguita una ricerca solo per tale valore, restituendo DRT_E_NO_MORE se non viene trovata.

fAnyMatchInRange

Il membro fAnyMatchInRange indica se la ricerca verrà interrotta dopo la prima corrispondenza all'interno dell'intervallo specificato oppure se la ricerca continuerà per la corrispondenza più vicina alla chiave specificata nell'API DrtStartSearch. Quando si imposta fAnyMatchInRange, la ricerca viene eseguita con cMaxEndpoints = 1 indipendentemente dal valore specificato di cMaxEndpoints in DRT_SEARCH_INFO.

fIterative

Il membro fIterative specifica se ogni nodo contattato dall'infrastruttura DRT durante la ricerca rende disponibili i dati della chiave/endpoint associati, che saranno accessibili all'applicazione tramite DRT_SEARCH_RESULT. Impostando fIterative su TRUE, il valore di cMaxEndpoints = 1 sarà forzato. Quando fIterative è impostato su TRUE all'interno di una query di ricerca per il DRT, l'applicazione viene richiamata dopo aver contattato ogni nodo o "hop". Ogni risultato dell'hop contiene una chiave che indica quale sarà il prossimo nodo che il DRT cercherà. Un risultato hop viene restituito attraverso DrtGetSearchResult come un risultato DRT_MATCH_INTERMEDIATE.

pMinimumKey e pMaximumKey

I membri pMinimumKey e pMaximumKey possono essere usati per cercare chiavi che rientrano in un intervallo. Se il membro fAnyMatchInRange è impostato su FALSE, DRT restituirà le chiavi più vicine alla destinazione di ricerca (specificata usando l'argomento pKey passato nella funzione DrtStartSearch) che rientra nell'intervallo. Si noti che l'argomento pKey passato a DrtStartSearch deve rientrare nell'intervallo definito da pMinimumKey e pMaximumKey. Per cercare una chiave precisa, impostare pMinimumKey, pMaximumKey e pKey sullo stesso valore.

Registrazione e Annullamento della Registrazione delle Chiavi

Informazioni sulle tabelle di routing distribuite

informazioni di riferimento sulle API tabella di routing distribuite