nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager

#include <src/lib/profiles/service-directory/ServiceDirectory.h>

L'oggetto gestore per la directory del servizio Weave.

Riepilogo

Il gestore del servizio Weave è l'interfaccia principale per le applicazioni del servizio di directory. Di conseguenza, nasconde le complicazioni derivanti dalla ricerca della voce di directory associata a un endpoint di servizio, dall’esecuzione della ricerca DNS su uno o più nomi host trovati, dal tentativo di connessione, dalla protezione della connessione e così via. Può anche gestire una cache delle informazioni sulla directory dei servizi.

Costruttori e distruttori

WeaveServiceManager(void)
Questo metodo inizializza l'istanza WeaveServiceManager.
~WeaveServiceManager(void)
Questo metodo elimina l'istanza WeaveServiceManager.

Tipi pubblici

@303{
  kWeave_DefaultSendTimeout = 15000
}
enum
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBegin
void(*
Un callback dell'applicazione viene eseguito immediatamente prima della connessione.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
Un callback dell'applicazione per contrassegnare l'ora di una query della directory dei servizi in uscita.
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
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 sulla directory principale.
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandler
void(*
Un gestore per le condizioni di errore e di stato.

Funzioni pubbliche

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
Imposta una funzione di callback da chiamare immediatamente prima 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 è 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 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 dello scambio Weave associato.
onConnectionComplete(WEAVE_ERROR aError)
void
Questo metodo gestisce l'evento di connessione completata per la transazione delle query degli endpoint di servizio.
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
Questo metodo gestisce tutti i messaggi 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 servizi allo stato iniziale.
reset(void)
void
Questo metodo reimposta il gestore 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::Weave::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest

Questa classe rappresenta una singola transazione gestita dal gestore del servizio.

Tipi pubblici

@303

 @303
Proprietà
kWeave_DefaultSendTimeout

Numero di millisecondi che deve essere ricevuta una risposta per la query della directory prima che scada il contesto del contesto dello scambio.

OnConnectBegin

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

Un callback dell'applicazione viene eseguito immediatamente prima 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 al servizio. Questo callback verrà chiamato sia per la connessione all'endpoint di servizio di destinazione, sia 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 della directory dei servizi in uscita.

Questo viene chiamato quando stiamo per inviare una richiesta di query dell'endpoint di servizio. Viene utilizzato in corrispondenza 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 viene chiamato quando otteniamo informazioni sull'ora dalla risposta alla query della directory dei servizi. Tieni presente che questo callback viene eseguito solo se una risposta viene analizzata correttamente e se vengono incluse le informazioni sull'ora

Dettagli
Parametri
[in] timeQueryReceiptMsec
Il numero di msec dall'epoca POSIX, quando la query è stata ricevuta sul lato server.
[in] timeProcessMsec
Il numero di msec utilizzati per l'elaborazione di questa query.

RootDirectoryAccessor

WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)

Una funzione di accesso per le informazioni sulla 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 si può premere per ottenere tutto il resto. Poiché è probabile che la disposizione e la provenienza di queste informazioni variano da un dispositivo all'altro, in questo caso forniamo un callback della funzione di accesso.

Dettagli
Parametri
[out] aDirectory
Un puntatore a un buffer per scrivere le informazioni di directory.
[in] aLength
La lunghezza del buffer specificato in byte.
Restituisce
WEAVE_NO_ERROR se l'operazione riesce, altrimenti il processo di caricamento viene interrotto.

StatusHandler

void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)

Un gestore per le condizioni di errore e di stato.

Un utente del gestore del servizio può essere informato di problemi durante il tentativo di eseguire una richiesta di connessione in uno dei due modi seguenti. Potrebbe ricevere un report di stato dal servizio o un WEAVE_ERROR generato internamente. In entrambi i casi, le informazioni arrivano tramite questo callback.

Dettagli
Parametri
[in] anAppState
Un puntatore a un oggetto dell'applicazione passato alla chiamata conect() corrispondente.
[in] anError
Un codice di errore Weave che indica che si è verificato un errore nel tentativo di eseguire la richiesta di connessione. Il valore sarà WEAVE_NO_ERROR nel caso in cui non si siano verificati errori e sia disponibile un report sullo stato.
[in] aStatusReport
Un puntatore a un report di stato generato dal servizio di directory remota. Questo argomento deve essere NULL nel caso in cui non ci sia stato un report di stato e venga passato un errore interno nell'argomento precedente.

Funzioni pubbliche

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Imposta una funzione di callback da chiamare immediatamente prima della connessione.

Dettagli
Parametri
[in] aConnectBegin
Un puntatore alla funzione callback. Un valore NULL disabilita il callback.

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 passato al momento della richiesta come identificatori. Se è l'ultima richiesta di connessione, questo metodo cancella anche qualsiasi stato di connessione alla directory dei servizi in attesa.

Dettagli
Parametri
[in] aServiceEp
L'ID endpoint di servizio della richiesta annullata.
[in] anAppState
Un puntatore all'oggetto di stato dell'app assegnato alla chiamata connect().

clearCache

void clearCache(
  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.

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 primo livello. Essenzialmente produce una connessione sicura al servizio Weave in presenza di un endpoint di servizio e di una modalità di autenticazione o della morte.

Questo metodo può essere chiamato solo dopo una chiamata a init() riuscita e una richiesta di connessione può essere potenzialmente annullata da 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 da un viaggio al servizio di directory. Il gestore del servizio accoda la richiesta prima di poter determinare il contenuto della cache.

Dettagli
Parametri
[in] aServiceEp
L'identificatore dell'endpoint di servizio, come definito in ServiceDirectory.h, per il servizio di interesse.
[in] aAuthMode
La modalità di autenticazione da utilizzare per la connessione al servizio di interesse.
[in] aAppState
Un puntatore a un oggetto di stato dell'applicazione, passato ai callback come argomento.
[in] aStatusHandler
Un callback da richiamare in caso di errore che si verifica prima del completamento della connessione.
[in] aConnectionCompleteHandler
Un callback da richiamare nel caso in cui la connessione richiesta sia completata. Tieni presente che la connessione potrebbe non riuscire e restituire un codice di errore Weave.
[in] aConnectTimeoutMsecs
Il timeout facoltativo della connessione TCP in millisecondi.
[in] aConnectIntf
L'interfaccia facoltativa su cui deve essere stabilita la connessione.
Restituisce
WEAVE_NO_ERROR in caso di operazione riuscita; altrimenti 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 essere utilizzato, è necessario inizializzare un oggetto gestore del servizio. Dopo una chiamata a questo metodo riuscita, i client possono iniziare a chiamare connect(), lookup() e altri metodi.

Dettagli
Parametri
[in] aExchangeMgr
Un puntatore al gestore della piattaforma di scambio pubblicitario da utilizzare per tutte le piattaforme di scambio pubblicitario di profili Service Directory.
[in] aCache
Un puntatore a un buffer che può essere utilizzato per memorizzare nella cache le informazioni sulla directory.
[in] aCacheLen
La lunghezza in byte della cache.
[in] aAccessor
Il callback, come definito in ServiceDirectory.h, da richiamare per caricare la directory root come punto di partenza per la ricerca nella directory.
[in] aDirAuthMode
La modalità di autenticazione da utilizzare quando si comunica con il servizio di directory.
[in] aServiceEndpointQueryBegin
Un puntatore di funzione di tipo OnServiceEndpointQueryStart, che viene chiamato all'inizio di una richiesta di directory dei servizi e consente al codice dell'applicazione di contrassegnare l'ora se vuole utilizzare la sincronizzazione dell'ora offerta dal protocollo della directory dei servizi.
[in] aServiceEndpointQueryEndWithTimeInfo
Un puntatore di funzione di tipo OnServiceEndpointQueryEndWithTimeInfo, che viene chiamato al ricevimento di una directory di servizio che consente alle applicazioni di sincronizzarsi con il servizio Weave utilizzando i campi temporali forniti nella risposta. Questo callback viene effettuato dopo che il gestore del servizio ha ricevuto una risposta con informazioni sull'orario. La cache dovrebbe essere già riempita correttamente prima che venga effettuato il callback.
[in] aConnectBegin
Un puntatore di funzione di tipo OnConnectStart, che viene chiamato immediatamente prima della connessione e consente alle applicazioni di osservare e, facoltativamente, modificare gli argomenti passati a #WeaveConnection::Connect(). Un valore NULL (valore predefinito) disabilita il callback.
Restituisce
WEAVE_ERROR_INVALID_ARGUMENT se l'argomento di una funzione non è valido; altrimenti 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, ovvero se è stata eseguita un'operazione connect() con successo, questo metodo completerà l'oggetto HostPortList fornito.

Nota: HostPortList è associato all'oggetto WeaveServiceManager. rimane valida 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
[in] aServiceEp
L'identificatore dell'endpoint di servizio da cercare.
[out] outHostPortList
Il puntatore a HostPortList che verrà compilato alla ricerca della voce di directory. Non deve essere NULL.
Valori restituiti
WEAVE_NO_ERROR
sul successo; altrimenti un rispettivo codice di errore.
WEAVE_ERROR_INVALID_SERVICE_EP
se l'endpoint di servizio specificato non viene trovato.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
se la directory contiene un tipo di voce di directory sconosciuto.

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() riuscita, questo metodo restituisce una voce di directory con un identificatore dell'endpoint di 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
[in] aServiceEp
L'identificatore dell'endpoint di servizio da cercare.
[out] aControlByte
Un puntatore al luogo in cui scrivere il byte di controllo delle voci di directory.
[out] aDirectoryEntry
Un puntatore-pointer da indirizzare alla voce di directory.
Valori restituiti
WEAVE_NO_ERROR
sul successo; altrimenti un rispettivo codice di errore.
WEAVE_ERROR_INVALID_SERVICE_EP
se l'endpoint di servizio specificato non viene trovato.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
se la directory contiene un tipo di voce di directory sconosciuto.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Questo metodo gestisce l'evento di chiusura della connessione segnalato dal contesto dello scambio Weave associato.

Dettagli
Parametri
[in] aError
Un errore Weave che indica il motivo della chiusura di questa connessione.

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, 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
[in] aError
Un errore Weave se si verificano errori durante la configurazione della connessione.

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
[in] aProfileId
L'ID profilo per questo messaggio in arrivo.
[in] aMsgType
Il tipo specifico del profilo per questo messaggio.
[in] aMsg
Il contenuto di questo messaggio.

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_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, qui per la compatibilità con le versioni precedenti, accetta e registra un errore, quindi chiama relocate(void) .

Dettagli
Parametri
[in] aError
un errore di registrazione.
Vedi anche:
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_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.

Vedi anche:
relocate(WEAVE_ERROR)

replaceOrAddCacheEntry

WEAVE_ERROR 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.

reimposta

void reset(
  WEAVE_ERROR aError
)

Questo metodo reimposta il gestore servizi allo stato iniziale.

Questo metodo reimposta tutti gli stati del gestore del servizio, inclusi lo stato delle comunicazioni, lo stato della cache e lo stato di eventuali richieste di connessione in attesa.

Questa versione del metodo, qui per la compatibilità con le versioni precedenti, accetta e registra un errore, quindi chiama reset(void) .

Dettagli
Parametri
[in] aError
L'errore che ha attivato questa operazione.
Vedi anche:
reset(void)

reimposta

void reset(
  void
)

Questo metodo reimposta il gestore servizi allo stato iniziale.

Questo metodo reimposta tutti gli stati del gestore del servizio, inclusi lo stato delle comunicazioni, lo stato della cache e lo stato di eventuali richieste di connessione in attesa.

Vedi anche:
reimposta(WEAVE_ERROR)

non risolvere

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 del servizio esegua una query sulla directory dei servizi.

Questa versione del metodo, qui per la compatibilità con le versioni precedenti, accetta e registra un errore, quindi chiama unresolve(void) .

Dettagli
Parametri
[in] aError
L'errore che ha attivato questa operazione.
Vedi anche:
unresolve(void)

non risolvere

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 del servizio esegua una query sulla directory dei servizi.

Vedi anche:
unresolve(WEAVE_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Questo metodo elimina l'istanza WeaveServiceManager.