nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
L'oggetto manager per la directory dei servizi Weave.
Riepilogo
Il gestore dei servizi Weave è l'interfaccia principale per le applicazioni con il servizio directory. Di conseguenza, nasconde le complicazioni insite nella ricerca della voce di directory associata a un endpoint di servizio, nella ricerca DNS su uno o più nomi host trovati, nel tentativo di connessione, nella protezione della connessione e così via. Potrebbe anche gestire una cache delle informazioni della directory del servizio.
Costruttori e distruttori |
|
---|---|
WeaveServiceManager(void)
Questo metodo inizializza l'istanza WeaveServiceManager.
|
|
~WeaveServiceManager(void)
Questo metodo distrugge l'istanza WeaveServiceManager.
|
Tipi pubblici |
|
---|---|
@303{
|
enum |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Un callback dell'applicazione effettuato immediatamente prima dell'instaurazione della connessione. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
Un callback dell'applicazione per contrassegnare l'ora di una query della directory di servizi in uscita. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Un callback dell'applicazione per fornire valori di tempo da una risposta della directory del servizio. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Una funzione di accesso per le informazioni sulla directory principale. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Un gestore per le condizioni di errore e stato. |
Funzioni pubbliche |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Imposta una funzione di callback da chiamare immediatamente prima dell'instaurazione della connessione.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Questo metodo annulla una richiesta di collegamento.
|
clearCache(void)
|
void
Questo metodo cancella lo stato e la cache del gestore se lo stato è nello stato kServiceMgrState_Resolved del terminale, il che significa che è stata ricevuta la risposta dall'endpoint di Service Directory.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
Questo metodo richiede la connessione a un servizio Weave.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
Questo metodo inizializza l'oggetto ServiceManager.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
Questo metodo cerca le informazioni della directory per un endpoint di servizio.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Questo metodo cerca le informazioni della directory per un endpoint di servizio.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Questo metodo gestisce l'evento di chiusura della connessione segnalato dal contesto dello scambio Weave associato.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Questo metodo gestisce l'evento di connessione completata per la transazione di query dell'endpoint del servizio.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Questo metodo gestisce qualsiasi messaggio di risposta nella conversazione con il servizio di directory.
|
onResponseTimeout(void)
|
void
Questo metodo gestisce l'evento di timeout in cui non è stata ricevuta alcuna risposta dal servizio di directory.
|
relocate(WEAVE_ERROR aError)
|
void
Questo metodo riposiziona la cache della directory dei servizi.
|
relocate(void)
|
void
Questo metodo riposiziona la cache della directory dei servizi.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
Aggiungi la voce di directory che sostituisce un nome host e un ID porta all'inizio dell'elenco di directory.
|
reset(WEAVE_ERROR aError)
|
void
Questo metodo reimposta il gestore dei servizi allo stato iniziale.
|
reset(void)
|
void
Questo metodo reimposta il gestore dei servizi allo stato iniziale.
|
unresolve(WEAVE_ERROR aError)
|
void
Questo metodo invalida la cache della directory dei servizi.
|
unresolve(void)
|
void
Questo metodo invalida la cache della directory dei servizi.
|
Corsi |
|
---|---|
nl:: |
Questa classe rappresenta una singola transazione gestita dal gestore del servizio. |
Tipi pubblici
@303
@303
Proprietà | |
---|---|
kWeave_DefaultSendTimeout
|
Numero di millisecondi entro cui deve essere ricevuta una risposta per la query della directory prima che il contesto della piattaforma di scambio pubblicitario scada. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Un callback dell'applicazione effettuato immediatamente prima dell'instaurazione della connessione.
Questo callback può essere utilizzato dalle applicazioni per osservare e, facoltativamente, modificare gli argomenti passati a #WeaveConnection::Connect() durante la creazione di una connessione di servizio. Questo callback verrà chiamato sia per la connessione all'endpoint del servizio di destinazione sia per la connessione all'endpoint di Service Directory nel caso in cui debba essere eseguita una ricerca nella directory.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Un callback dell'applicazione per contrassegnare l'ora di una query della directory dei servizi in uscita.
Questo viene chiamato quando stiamo per inviare una richiesta di query dell'endpoint di servizio. Viene utilizzato per trovare una corrispondenza con OnServiceEndpointQueryEnd per compensare il tempo di esecuzione del messaggio.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Un callback dell'applicazione per fornire valori di tempo da una risposta della directory del servizio.
Viene chiamato quando riceviamo informazioni sull'ora dalla risposta alla query della directory dei servizi. Tieni presente che questo callback si verifica solo se una risposta viene analizzata correttamente e sono incluse le informazioni sull'ora
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Una funzione di accesso per le informazioni sulla directory principale.
Devi iniziare da qualche parte e con la directory dei servizi devi iniziare con una directory stub che contenga l'indirizzo di un server a cui puoi accedere per accedere a tutto il resto. Poiché la disposizione e la provenienza di queste informazioni potrebbero variare da dispositivo a dispositivo, forniamo qui un callback dell'accessore.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Restituisce |
WEAVE_NO_ERROR in caso di esito positivo, altrimenti il processo di caricamento verrà interrotto.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Un gestore per le condizioni di errore e di stato.
Un utente di Service Manager può essere informato dei problemi riscontrati durante il tentativo di esecuzione di una richiesta di connessione in due modi. Potrebbe ricevere un report sullo stato dal servizio o un WEAVE_ERROR generato internamente. In entrambi i casi, le informazioni vengono trasmesse tramite questo callback.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
Funzioni pubbliche
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Imposta una funzione di callback da chiamare immediatamente prima dell'instaurazione della connessione.
Dettagli | |||
---|---|---|---|
Parametri |
|
WeaveServiceManager
WeaveServiceManager( void )
Questo metodo inizializza l'istanza WeaveServiceManager.
Tieni presente che è necessario chiamare init() per inizializzare ulteriormente questa istanza.
annulla
void cancel( uint64_t aServiceEp, void *aAppState )
Questo metodo annulla una richiesta di collegamento.
Questo metodo annulla una richiesta di connessione in base all'ID endpoint del servizio e all'oggetto dello stato dell'applicazione passati al momento della richiesta come identificatori. Se si tratta dell'ultima richiesta di connessione, questo metodo cancella anche qualsiasi stato di connessione della directory dei servizi in attesa.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
clearCache
void clearCache( void )
Questo metodo cancella lo stato e la cache del gestore se lo stato è nello stato terminale kServiceMgrState_Resolved, il che significa che è stata ricevuta la risposta dall'endpoint Service Directory.
connessione
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
Questo metodo richiede la connessione a un servizio Weave.
Questa è la chiamata di connessione di primo livello. In sostanza, genera una connessione sicura al servizio Weave in base a un endpoint del servizio e a una modalità di autenticazione oppure non riesce a completare l'operazione.
Questo metodo può essere chiamato solo dopo una chiamata riuscita a init() e una richiesta di connessione può essere potenzialmente annullata da cancel().
Questo metodo può essere chiamato prima che la cache locale venga compilata con i dati di provisioning predefiniti o con una richiesta al servizio di directory. Il gestore del servizio mette in coda la richiesta prima che sia possibile determinare i contenuti della cache.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Restituisce |
WEAVE_NO_ERROR in caso di operazione riuscita; in caso contrario, un rispettivo codice di errore.
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
Questo metodo inizializza l'oggetto Service Manager.
Per poter essere utilizzato, è necessario inizializzare un oggetto ServiceManager. Dopo una chiamata a questo metodo riuscita, i client possono iniziare a chiamare connect(), lookup() e altri metodi.
Dettagli | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||||
Restituisce |
WEAVE_ERROR_INVALID_ARGUMENT se un argomento della funzione non è valido; in caso contrario, WEAVE_NO_ERROR.
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Questo metodo cerca le informazioni della directory per un endpoint di servizio.
Se la directory del servizio è stata risolta, ovvero se è stata eseguita un'operazione connect() corretta, questo metodo compila l'oggetto HostPortList fornito.
Nota: HostPortList è associato all'oggetto WeaveServiceManager; rimane valido fino a quando la cache della directory dei servizi non viene svuotata o fino a quando non viene eseguita un'altra ricerca nella directory dei servizi.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Questo metodo cerca le informazioni della directory per un endpoint di servizio.
Se la directory dei servizi è stata risolta, ovvero se è stata eseguita un'operazione connect() corretta, questo metodo restituirà una voce di directory in base a un identificatore dell'endpoint del servizio.
Questo metodo espone i dettagli dell'implementazione interna della directory di servizio, che dovrebbe essere molto preferita dalle implementazioni utilizzando la variante di questo metodo che genera HostPortList.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Questo metodo gestisce l'evento di chiusura della connessione segnalato dal contesto di scambio Weave associato.
Dettagli | |||
---|---|---|---|
Parametri |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Questo metodo gestisce l'evento di connessione completata per la transazione di query dell'endpoint del servizio.
Esistono diverse possibilità. Innanzitutto, la connessione potrebbe non essere riuscita, nel qual caso abbiamo finito. In caso contrario, la connessione è effettivamente completata e vogliamo fare l'apertura di un contesto di scambio e inviare una query sulla directory.
Dettagli | |||
---|---|---|---|
Parametri |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Questo metodo gestisce tutti i messaggi di risposta nella conversazione con il servizio di directory.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
onResponseTimeout
void onResponseTimeout( void )
Questo metodo gestisce l'evento di timeout, in cui non è stata ricevuta alcuna risposta dal servizio di directory.
spostare
void relocate( WEAVE_ERROR aError )
Questo metodo riposiziona la cache della directory dei servizi.
Quando un endpoint di servizio restituisce un report di stato con il codice di stato kStatus_Relocate, l'applicazione potrebbe chiamare unresolve() per svuotare la cache e annullare le richieste di connessione. Questo metodo semplifica la gestione degli errori chiamando unresolve() la prima volta e reset() se il problema non è ancora stato risolto.
Questa versione del metodo, presente per compatibilità con le versioni precedenti, acquisisce e registra un errore, quindi chiama relocate(void) .
Dettagli | |||
---|---|---|---|
Parametri |
|
relocate(void)
trasferire
void relocate( void )
Questo metodo riposiziona la cache della directory dei servizi.
Quando un endpoint di servizio restituisce un report di stato con il codice di stato kStatus_Relocated, l'applicazione potrebbe chiamare unresolve() per svuotare la cache e annullare le richieste di connessione. Questo metodo semplifica la gestione degli errori chiamando unresolve() la prima volta e reset() se il problema non è ancora stato risolto.
Vedi anche:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Aggiungi la voce della directory che sostituisce un nome host e un ID porta all'inizio dell'elenco di directory.
reimposta
void reset( WEAVE_ERROR aError )
Questo metodo reimposta il gestore dei servizi allo stato iniziale.
Questo metodo reimposta tutti gli stati del gestore dei servizi, inclusi lo stato delle comunicazioni, lo stato della cache e lo stato di eventuali richieste di connessione in attesa.
Questa versione del metodo, presente per la compatibilità con le versioni precedenti, acquisisce e registra un errore, quindi chiama reset(void) .
Dettagli | |||
---|---|---|---|
Parametri |
|
reset(void)
reimposta
void reset( void )
Questo metodo reimposta il gestore servizi allo stato iniziale.
Questo metodo reimposta tutti gli stati del gestore dei servizi, inclusi lo stato delle comunicazioni, lo stato della cache e lo stato di eventuali richieste di connessione in attesa.
Vedi anche:reset(WEAVE_ERROR)
non risolto
void unresolve( WEAVE_ERROR aError )
Questo metodo invalida la cache della directory dei servizi.
Questo metodo imposta lo stato della cache della directory dei servizi in modo che, alla richiesta successiva, il gestore dei servizi emetta una query nella directory dei servizi.
Questa versione del metodo, presente per compatibilità con le versioni precedenti, acquisisce e registra un errore, quindi chiama unresolve(void) .
Dettagli | |||
---|---|---|---|
Parametri |
|
unresolve(void)
non risolto
void unresolve( void )
Questo metodo invalida la cache della directory dei servizi.
Questo metodo imposta lo stato della cache della directory dei servizi in modo che, alla richiesta successiva, il gestore dei servizi emetta una query nella directory dei servizi.
Vedi anche:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Questo metodo distrugge l'istanza WeaveServiceManager.