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 del servizio Weave è l'interfaccia principale per le applicazioni del servizio di directory. Di conseguenza, nasconde le complicazioni inerenti alla ricerca della voce di directory associata a un endpoint di servizio, all'esecuzione di ricerche DNS su uno o più nomi host trovati, al tentativo di connessione, alla protezione della connessione e così via. Potrebbe anche gestire una cache di informazioni della directory dei servizi.
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 eseguito immediatamente prima della creazione della connessione. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
Un callback dell'applicazione per contrassegnare l'ora di una query sulla directory dei servizi in uscita. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Un callback dell'applicazione per fornire valori temporali dalla risposta di una directory dei servizi. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Una funzione di accesso per le informazioni della directory principale. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Un gestore per gli errori e le condizioni di stato. |
Funzioni pubbliche |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Imposta una funzione di callback da chiamare immediatamente prima della creazione della connessione.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Questo metodo annulla una richiesta di connessione.
|
clearCache(void)
|
void
Questo metodo cancella lo stato e la cache del gestore se lo stato è in stato kServiceMgrState_Resolved del terminale, a indicare 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 Service Manager.
|
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 di scambio Weave associato.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Questo metodo gestisce l'evento di connessione completata per la transazione della query dell'endpoint di 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 della directory di override di un nome host e dell'ID porta all'inizio dell'elenco di directory.
|
reset(WEAVE_ERROR aError)
|
void
Questo metodo reimposta il gestore del servizio allo stato iniziale.
|
reset(void)
|
void
Questo metodo reimposta il gestore del servizio allo stato iniziale.
|
unresolve(WEAVE_ERROR aError)
|
void
Questo metodo rende la cache di Service Directory non valida.
|
unresolve(void)
|
void
Questo metodo rende la cache di Service Directory non valida.
|
Corsi |
|
---|---|
nl:: |
Questa classe rappresenta una singola transazione gestita dal gestore del servizio. |
Tipi pubblici
@303
@303
Proprietà | |
---|---|
kWeave_DefaultSendTimeout
|
Numero di millisecondi di ricezione di una risposta per la query sulla directory prima del timeout del contesto di scambio. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Un callback dell'applicazione eseguito immediatamente prima della creazione della connessione.
Questo callback può essere utilizzato dalle applicazioni per osservare e, facoltativamente, modificare gli argomenti passati a #WeaveConnection::Connect() durante la connessione a un servizio. Questo callback verrà chiamato sia per la connessione all'endpoint di servizio di destinazione che per la connessione all'endpoint di Service Directory nel caso in cui sia necessario eseguire una ricerca nella directory.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Un callback dell'applicazione per contrassegnare l'ora di una query sulla directory dei servizi in uscita.
Questo viene chiamato quando stiamo per inviare una richiesta di query sull'endpoint di servizio. Questo viene utilizzato in combinazione con OnServiceEndpointQueryEnd per compensare il tempo di pubblicazione dei messaggi.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Un callback dell'applicazione per fornire valori temporali dalla risposta di una directory dei servizi.
Questo callback viene chiamato quando otteniamo informazioni sull'orario dalla risposta alla query di Service Directory. Tieni presente che questo callback avviene solo se una risposta viene analizzata correttamente e vengono incluse informazioni sull'orario
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Una funzione di accesso per le informazioni della directory principale.
Bisogna iniziare da qualche parte e con la directory dei servizi bisogna iniziare con una directory stub che contiene l'indirizzo di un server che è possibile premere per recuperare tutto il resto. Poiché la disposizione e la provenienza di queste informazioni potrebbero variare da dispositivo a dispositivo, forniamo qui un callback della funzione di accesso.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Restituisce |
WEAVE_NO_ERROR se l'operazione va a buon fine, altrimenti il processo di caricamento verrà interrotto.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Un gestore per gli errori e le condizioni di stato.
Un utente del gestore del servizio può venire informato dei problemi riscontrati durante il tentativo di eseguire una richiesta di connessione in uno dei due seguenti modi. Potrebbe ricevere un report sullo stato dal servizio oppure un WEAVE_ERROR generato internamente. In entrambi i casi, le informazioni arrivano tramite questo callback.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
Funzioni pubbliche
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Imposta una funzione di callback da chiamare immediatamente prima della creazione 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 connessione.
Questo metodo annulla una richiesta di connessione in base all'ID endpoint di servizio e all'oggetto dello stato dell'applicazione trasmessi al momento della richiesta come identificatori. Se si tratta dell'ultima richiesta di connessione, questo metodo cancella anche qualsiasi stato di connessione alla directory dei servizi in sospeso.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
clearCache
void clearCache( void )
Questo metodo cancella lo stato e la cache del gestore se lo stato è in stato kServiceMgrState_Resolved del terminale, a indicare che è stata ricevuta la risposta dall'endpoint di 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 Connect di primo livello. Essenzialmente produce una connessione sicura al servizio Weave in presenza di un endpoint di servizio e di una modalità di autenticazione o di tentativi di arresto.
Questo metodo può essere chiamato solo dopo una chiamata riuscita a init() e una richiesta di connessione può essere potenzialmente annullata tramite cancel().
Questo metodo può essere chiamato prima che la cache locale venga riempita con dati provenienti da dati di cui è stato eseguito il provisioning predefinito o prima di un viaggio al servizio di directory. Il gestore del servizio si limita a mettere in coda la richiesta prima che sia possibile determinare il contenuto della cache.
Dettagli | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||||
Restituisce |
WEAVE_NO_ERROR se l'operazione va a buon fine; in caso contrario, viene visualizzato un codice di errore corrispondente.
|
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 Service Manager. 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 l'argomento di una 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 dei servizi è stata risolta, ad esempio se si è verificata un'operazione connect(), questo metodo completerà l'oggetto HostPortList fornito.
Nota: HostPortList è associato all'oggetto WeaveServiceManager e rimane valido fino a quando la cache di 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, ad esempio se è stata eseguita un'operazione connect(), questo metodo restituirà una voce di directory con un identificatore di endpoint di servizio.
Questo metodo espone i dettagli dell'implementazione interna della directory del servizio, le implementazioni dovrebbero preferire l'utilizzo della 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 della query dell'endpoint di servizio.
Ci sono un paio di possibilità. Innanzitutto, la connessione potrebbe non essere riuscita, e in questo caso abbiamo finito. In caso contrario, la connessione è effettivamente completata e ciò che vogliamo fare è aprire un contesto di scambio e inviare una query di directory.
Dettagli | |||
---|---|---|---|
Parametri |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Questo metodo gestisce qualsiasi messaggio 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.
trasferire
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_Relocalized, 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, qui per compatibilità con le versioni precedenti, prende 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_Relocalized, 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:spostamento(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Aggiungi la voce della directory di override di un nome host e dell'ID porta all'inizio dell'elenco di directory.
reimpostazione
void reset( WEAVE_ERROR aError )
Questo metodo reimposta il gestore del servizio allo stato iniziale.
Questo metodo reimposta tutti gli stati del gestore del servizio, inclusi lo stato delle comunicazioni, della cache e di eventuali richieste di connessione in attesa.
Questa versione del metodo, qui per compatibilità con le versioni precedenti, prende e registra un errore, quindi chiama reset(void) .
Dettagli | |||
---|---|---|---|
Parametri |
|
reset(void)
reimpostazione
void reset( void )
Questo metodo reimposta il gestore del servizio allo stato iniziale.
Questo metodo reimposta tutti gli stati del gestore del servizio, inclusi lo stato delle comunicazioni, della cache e di eventuali richieste di connessione in attesa.
Vedi anche:reset(WEAVE_ERROR)
risolvere
void unresolve( WEAVE_ERROR aError )
Questo metodo rende la cache di Service Directory non valida.
Questo metodo consente di impostare lo stato della cache di Service Directory in modo che alla richiesta successiva il gestore di servizi invii una query di Service Directory.
Questa versione del metodo, qui per compatibilità con le versioni precedenti, prende e registra un errore, quindi chiama unresolve(void) .
Dettagli | |||
---|---|---|---|
Parametri |
|
unresolve(void)
risolvere
void unresolve( void )
Questo metodo rende la cache di Service Directory non valida.
Questo metodo consente di impostare lo stato della cache di Service Directory in modo che alla richiesta successiva il gestore di servizi invii una query di Service Directory.
Vedi anche:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Questo metodo distrugge l'istanza WeaveServiceManager.