Ricerca di una tabella di routing distribuita
Prima che un'applicazione possa cercare la tabella di routing distribuita (DRT), deve essere creata una query di ricerca. Il valore della chiave desiderato viene specificato dall'applicazione quando viene chiamata la funzione DrtStartSearch . 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 altro alla conclusione della ricerca. Tuttavia, se fIterative è impostato in DRT_SEARCH_INFO, un evento dell'applicazione può essere segnalato quando viene effettuato il contatto con ogni nodo lungo la strada.
Dopo aver segnalato un evento, l'applicazione chiama quindi la funzione DrtGetSearchResult per i risultati. Se il codice restituito è S_OK, i risultati vengono indicati 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 conclusione del risultato.
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 le corrispondenze trovate nell'istanza DRT locale.
cMaxEndpoints
La quantità e l'intervallo dei risultati restituiti dalla ricerca vengono specificati dall'applicazione con i valori cMaxEndpoint (quantità) e i valori pMinimumKey e 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 dai valori pMinimumKey e pMaximumKey in DRT_SEARCH_INFO. Questa corrispondenza può essere una corrispondenza esatta o la corrispondenza più vicina all'interno dell'intervallo. Se non viene trovata una corrispondenza, viene restituita 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 più vicini all'interno dell'intervallo. Inoltre, se pMinimumKey e pMaximumKey sono impostati sullo stesso valore, viene eseguita una ricerca solo per tale valore, restituendo DRT_E_NO_MORE se non viene trovato.
fAnyMatchInRange
Il membro fAnyMatchInRange indica se la ricerca si arresterà dopo la prima corrispondenza si trova all'interno dell'intervallo specificato o se la ricerca continuerà per la corrispondenza più vicina alla chiave specificata nell'API DrtStartSearch . Quando fAnyMatchInRange è impostato, 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 avrà i dati chiave/endpoint associati all'applicazione tramite DRT_SEARCH_RESULT. Impostando fIterative su TRUE, il valore di cMaxEndpoints = 1 verrà forzato. Quando fIterative è impostato su TRUE all'interno di una query di ricerca per DRT, l'applicazione viene richiamata dopo il contatto con ogni nodo o "hop". Ogni risultato hop contiene una chiave che indica il nodo in cui verrà eseguita la ricerca successiva. Un risultato hop viene restituito tramite DrtGetSearchResult come 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.
Argomenti correlati