nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

La classe Binding gestisce lo stato delle comunicazioni per conto di un'entità applicativa che utilizza Weave.

Riepilogo

Quando un'applicazione vuole utilizzare Weave per comunicare con un'entità remota, esiste un'ampia varietà di opzioni. La classe Binding raggruppa queste opzioni e le organizza in modo che le cose semplici siano facili e quelle più difficili siano almeno gestibili. Le opzioni illustrate includono:

  • comunicazione unicast UDP con un nodo peer noto.
  • Trasmissione UDP con "qualsiasi" nodo.
  • comunicazione WRMP unicast con un nodo peer noto.
  • comunicazioni TCP con un nodo peer noto.
  • Comunicazioni TCP con un endpoint di servizio noto che utilizza un'istanza del gestore di servizi per la configurazione.
  • Comunicazioni TCP basate su una connessione prestabilita.

Costruttori e distruttori

Binding(void)
Il costruttore predefinito per gli oggetti Binding.
~Binding(void)
Il distruttore per gli oggetti Binding.

Tipi pubblici

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum
L'insieme di stati dell'oggetto Binding.

Attributi pubblici

mAuthMode
WeaveAuthMode
La modalità di autenticazione Weave da utilizzare.
mConnection
Un puntatore alla connessione Weave attualmente in uso in questa associazione.
mEngine
Un puntatore all'oggetto ProtocolEngine correlato a questa associazione.
mPeerNodeId
uint64_t
L'ID nodo a 64 bit dell'associazione di destinazione.
mServiceMgr
Un puntatore all'oggetto ServiceManager (facoltativo) da utilizzare per completare l'associazione.
mState
uint8_t
Lo stato attuale dell'oggetto Binding.
mTransport
uint8_t
Il trasporto da utilizzare per completare questa associazione.

Funzioni pubbliche

CompleteConfirm(WeaveConnection *aConnection)
void
Gestire la conferma di una richiesta di associazione.
CompleteConfirm(StatusReport & aReport)
void
Gestire l'errore di una richiesta di associazione.
CompleteConfirm(void)
void
Gestire la conferma di una richiesta di associazione.
CompleteRequest(ProtocolEngine *aEngine)
Richiedi il completamento di un'associazione.
Connect(WeaveConnection *aConnection)
Completa un'associazione TCP fornendo una connessione completata.
Finalize(void)
void
"Non completato" rileggere l'associazione e liberarla.
Finalize(WEAVE_ERROR aErr)
void
"Non completato" rileggere l'associazione e liberarla.
Free(void)
void
Cancella lo stato di associazione.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Genera un oggetto ExchangeContext da un oggetto Binding.
IncompleteIndication(StatusReport & aReport)
void
Gestire l'errore di un'associazione.
Init(const uint64_t & aPeerNodeId)
Inizializza un'associazione solo con un ID nodo.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Inizializza un oggetto Binding in base all'ID peer e al trasporto.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inizializzare un oggetto Binding in un endpoint di servizio.
Init(WeaveConnection *aConnection)
Inizializza un oggetto Binding con una WeaveConnection.
IsComplete(void)
bool
Controlla se un'associazione è completa.
IsFree(void)
bool
Il segno di spunta è che l'associazione è senza costi.
UncompleteRequest(void)
void
Associazione incompleta.
UncompleteRequest(WEAVE_ERROR aErr)
void
Associazione incompleta.

Tipi pubblici

@165

 @165

L'insieme di stati dell'oggetto Binding.

Proprietà
kState_Complete

Lo stato di un'associazione completata e pronta per l'uso.

kState_Completing

Lo stato di un'associazione in fase di completamento.

kState_Incomplete

Lo stato iniziale (e finale) di un'associazione.

Attributi pubblici

mAuthMode

WeaveAuthMode mAuthMode

La modalità di autenticazione Weave da utilizzare.

(READ_ONLY)

Questa è la modalità di autenticazione utilizzata in tutte le comunicazioni regolate da questa associazione.

mConnection

WeaveConnection * mConnection

Un puntatore alla connessione Weave attualmente in uso in questa associazione.

(SOLA LETTURA)

Le associazioni TCP possono essere inizializzate con una connessione immediatamente o possono assegnarne una al momento del completamento.

mEngine

ProtocolEngine * mEngine

Un puntatore all'oggetto ProtocolEngine correlato a questa associazione.

Un'associazione viene generalmente completata rispetto a un particolare motore di protocollo, che viene principalmente utilizzato come modo per accedere a Messagelayer. È qui che teniamo traccia di tutto questo.

mPeerNodeId

uint64_t mPeerNodeId

L'ID nodo a 64 bit dell'associazione di destinazione.

(SOLA LETTURA)

Ogni associazione ha un'entità target, che è denominata qui. Oltre a un ID nodo Weave, è possibile assegnare il nome a un endpoint di servizio.

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

Un puntatore all'oggetto ServiceManager (facoltativo) da utilizzare per completare l'associazione.

(SOLA LETTURA)

Durante l'associazione al servizio Weave, è possibile che al momento dell'inizializzazione venga fornito un ID endpoint di servizio a 64 bit al posto di un ID nodo Weave. In questo caso, per completare l'associazione è necessario anche un oggetto ServiceManager. Le normali associazioni TCP o WRMP non richiedono un oggetto ServiceManager.

mState

uint8_t mState

Lo stato attuale dell'oggetto Binding.

Solo un elemento "completato" dell'operazione può essere eseguita alla volta e, in ogni caso, se chiedi di completare un'associazione completata, viene chiamata immediatamente la funzione di conferma. La variabile di stato riportata di seguito monitora lo stato corrente e agisce come un blocco.

mTransport

uint8_t mTransport

Il trasporto da utilizzare per completare questa associazione.

(SOLA LETTURA)

I valori possibili per mTransport sono definiti in DMConstants.h.

Funzioni pubbliche

Associazione

 Binding(
  void
)

Il costruttore predefinito per gli oggetti Binding.

Cancella tutti gli stati interni.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Gestire la conferma di una richiesta di associazione.

Dettagli
Parametri
[in] aConnection
Un puntatore a una WeaveConnection attiva all'associazione di destinazione.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Gestire l'errore di una richiesta di associazione.

Dettagli
Parametri
[in] aReport
Un riferimento a un oggetto StatusReport che descrive l'errore.

CompleteConfirm

void CompleteConfirm(
  void
)

Gestire la conferma di una richiesta di associazione.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Richiedi il completamento di un'associazione.

Il completamento di un'associazione viene eseguito, almeno per le associazioni che richiedono TCP, rispetto a un particolare oggetto ProtocolEngine, che fornisce l'accesso a un'istanza di ExchangeManager.

Dettagli
Parametri
[in] aEngine
Un puntatore a un oggetto ProtocolEngine per conto del quale viene eseguito il completamento.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_INCORRECT_STATE
se l'associazione è già stata completata.
WEAVE_ERROR_NO_MEMORY
Se è necessaria una connessione e non è disponibile nessuna connessione
Restituisce
In caso contrario, l'errore WEAVE_ERROR è stato restituito durante il tentativo di connessione.

Connetti

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Completa un'associazione TCP fornendo una connessione completata.

Un'associazione TCP appena inizializzata non può essere utilizzata fino al completamento. Normalmente questa operazione viene eseguita on demand quando l'applicazione tenta di utilizzare l'associazione per inviare messaggi, ma può anche essere completata esplicitamente fornendo una connessione Weave.

Dettagli
Parametri
[in] aConnection
Un puntatore a una WeaveConnection utilizzata per completare l'associazione.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_INCORRECT_STATE
Se l'associazione ha già una connessione.
WEAVE_ERROR_INVALID_ARGUMENT
Se la connessione è NULL.

Finalizza

void Finalize(
  void
)

"Non completato" rileggere l'associazione e liberarla.

Le associazioni possono avere uno stato che deve essere ripulito, ad esempio chiusura della connessione, gestita dal metodo Uncomplete() oltre allo stato che viene semplicemente ripristinato allo stato iniziale dal metodo Free(). Questo metodo, principalmente per comodità, richiama entrambi.

Vedi anche:
Finalizza(WEAVE_ERROR)

Finalizza

void Finalize(
  WEAVE_ERROR aErr
)

"Non completato" rileggere l'associazione e liberarla.

Le associazioni possono avere uno stato che richiede una pulizia, ad esempio chiusura della connessione, gestita dal metodo Uncomplete() oltre allo stato che viene semplicemente ripristinato allo stato iniziale dal metodo Free(). Questo metodo, principalmente per comodità, richiama entrambi.

Dettagli
Parametri
[in] aErr
Questo codice di errore indica la causa di questa richiesta. Se non è WEAVE_NO_ERROR, la connessione TCP potrebbe essere interrotta.
Vedi anche:
Finalizza(void)

Gratis

void Free(
  void
)

Cancella lo stato di associazione.

Ripristina in modo incondizionato tutto lo stato di associazione al suo stato originale.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Genera un oggetto ExchangeContext da un oggetto Binding.

Dettagli
Parametri
[in] aExchangeMgr
Un puntatore al gestore della piattaforma di scambio pubblicitario da cui richiedere un contesto.
[in] aAppState
Un puntatore nullo a un oggetto dello stato dell'applicazione da archiviare nel contesto di scambio per un uso successivo.
Restituisce
un puntatore a un oggetto ExchangeContext o NULL in caso di errore.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Gestire l'errore di un'associazione.

Questo metodo viene richiamato e, a sua volta, richiama i gestori di livello superiore quando l'associazione non va a buon fine DOPO il completamento, ovvero dopo che CompleteConfirm() è stato richiamato con uno stato che indica l'esito positivo.

Dettagli
Parametri
[in] aReport
Un riferimento a uno StatusReport che descrive che cosa non ha funzionato.
Vedi anche:
CompleteConfirm(StatusReport &amp;aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Inizializza un'associazione solo con un ID nodo.

Questo determina un'associazione con il trasporto predefinito configurato.

Dettagli
Parametri
[in] aPeerNodeId
Un riferimento all'ID a 64 bit dell'associazione di destinazione.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_INVALID_ARGUMENT
Se l'associazione è sottospecificata.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Inizializza un oggetto Binding in base all'ID peer e al trasporto.

Dettagli
Parametri
[in] aPeerNodeId
Un riferimento all'identificatore del nodo a 64 bit dell'associazione di destinazione.
[in] aTransport
La specifica del trasporto, da WeaveTransportOption.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_INVALID_ARGUMENT
Se l'associazione è sottospecificata.

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Inizializzare un oggetto Binding in un endpoint di servizio.

In questo modo puoi collegarti a un determinato endpoint sul servizio Nest. Un'associazione di questo tipo richiede un processo di completamento in più fasi, che può includere il completamento o l'aggiornamento della cache della directory dei servizi locali. Per la maggior parte, questa procedura non è visibile alla domanda, ma significa che gli errori che si verificano in un secondo momento potrebbero essere recapitati, normalmente tramite il relativo pulsante di conferma. dopo, a volte molto tempo dopo, la richiesta originale di utilizzare (e completare) l'associazione.

Dettagli
Parametri
[in] aServiceEpt
Un riferimento all'identificatore a 64 bit per l'endpoint del servizio Weave di interesse.
[in] aServiceMgr
Un puntatore all'istanza del gestore di servizi da utilizzare per cercare un livello di servizio e connettersi a questo livello.
[in] aAuthMode
La modalità di autenticazione da utilizzare per la connessione.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_INVALID_ARGUMENT
Se l'associazione è sottospecificata.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Inizializza un oggetto Binding con una WeaveConnection.

Dettagli
Parametri
[in] aConnection
Un puntatore a WeaveConnection da utilizzare come base per l'associazione.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_INVALID_ARGUMENT
Se l'associazione è sottospecificata.

IsComplete

bool IsComplete(
  void
)

Controlla se un'associazione è completa.

Dettagli
Restituisce
true se è completo, false in caso contrario.
Vedi anche:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Il segno di spunta è che l'associazione è senza costi.

"Senza costi" in questo contesto significa semplicemente: "ha un nodo peer definito ID". IsFree() should be thought of as meaning &quot;has had Free() chiamato e non viene più utilizzato da allora".

Dettagli
Restituisce
true se l'associazione è senza costi, false in caso contrario.

UncompleteRequest

void UncompleteRequest(
  void
)

Associazione incompleta.

Fondamentalmente, un'associazione deve essere nel campo "incompleto" stato chiamato dopo che questo metodo è stato chiamato ma, in modo più discreto, qualsiasi stato pertinente non contenuto nell'associazione stessa, ad esempio TCP, dovrebbe essere anch'essa pulita. Le applicazioni potrebbero prendere in considerazione la possibilità di richiamare UncompleteRequest() nell'ambito della pulizia in caso di errore.

Vedi anche:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Associazione incompleta.

Fondamentalmente, un'associazione deve essere nel campo "incompleto" stato chiamato dopo che questo metodo è stato chiamato ma, in modo più discreto, qualsiasi stato pertinente non contenuto nell'associazione stessa, ad esempio TCP, dovrebbe essere anch'essa pulita. Le applicazioni potrebbero prendere in considerazione la possibilità di richiamare UncompleteRequest() nell'ambito della pulizia in caso di errore.

Dettagli
Parametri
[in] aErr
Se non è WEAVE_NO_ERROR, l'eventuale connessione esistente verrà interrotta anziché chiusa automaticamente.
Vedi anche:
UncompleteRequest(void)

~Associazione

virtual  ~Binding(
  void
)

Il distruttore per gli oggetti Binding.

Cancella tutti gli stati interni E, se necessario, chiude le connessioni aperte.