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 utilizzando Weave.

Riepilogo

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

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

Costruttori e distruttori

Binding(void)
Il costruttore predefinito per gli oggetti Associazione.
~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 relativo a questa Binding.
mPeerNodeId
uint64_t
L'ID nodo a 64 bit della destinazione dell'associazione.
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
Gestisci la conferma di una richiesta di associazione.
CompleteConfirm(StatusReport & aReport)
void
Gestire l'errore di una richiesta di associazione.
CompleteConfirm(void)
void
Gestisci 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
"Annulla il completamento" di un'associazione e liberala.
Finalize(WEAVE_ERROR aErr)
void
"Annulla il completamento" di un'associazione e liberala.
Free(void)
void
Cancella lo stato di associazione.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Produci un oggetto ExchangeContext da un'Binding.
IncompleteIndication(StatusReport & aReport)
void
Gestisci 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 a un endpoint di servizio.
Init(WeaveConnection *aConnection)
Inizializza un oggetto Binding con una WeaveConnection.
IsComplete(void)
bool
Controlla se l'associazione è completa.
IsFree(void)
bool
Il controllo dell'associazione è senza costi.
UncompleteRequest(void)
void
Causa l'incompleta dell'associazione.
UncompleteRequest(WEAVE_ERROR aErr)
void
Causa l'incompleta dell'associazione.

Tipi pubblici

@165

 @165

L'insieme di stati dell'oggetto Binding.

Proprietà
kState_Complete

Lo stato di un'associazione, completa 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.

(SOLA LETTURA)

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 immediata oppure possono allocarne una al momento del completamento.

mEngine

ProtocolEngine * mEngine

Un puntatore all'oggetto ProtocolEngine relativo a questa Binding.

In genere, un'associazione viene completata in relazione a un particolare motore di protocollo, che viene utilizzato principalmente come modo per accedere a Messagelayer. È qui che ne teniamo traccia.

mPeerNodeId

uint64_t mPeerNodeId

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

(SOLA LETTURA)

Ogni associazione ha un'entità di destinazione, denominata qui. Oltre a un ID nodo Weave, potrebbe assegnare un 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)

Quando viene associato al servizio Weave, al momento dell'inizializzazione è possibile fornire 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.

Può essere eseguita una sola operazione "completata" alla volta e, in ogni caso, se chiedi di completare un'associazione completata, viene richiamata immediatamente la funzione di conferma. La variabile di stato riportata di seguito monitora lo stato corrente e funge da 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 Associazione.

Cancella tutto lo stato interno.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Gestisci la conferma di una richiesta di associazione.

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

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
)

Gestisci la conferma di una richiesta di associazione.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Richiedi il completamento di un'associazione.

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

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

Collega

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Completa un'associazione TCP fornendo una connessione completata.

Un'associazione TCP appena inizializzata non può essere utilizzata fino a quando non è stata completata. 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
In caso di successo.
WEAVE_ERROR_INCORRECT_STATE
Se l'associazione ha già una connessione.
WEAVE_ERROR_INVALID_ARGUMENT
Se la connessione è NULL.

Finalizza

void Finalize(
  void
)

"Annulla il completamento" di un'associazione e liberala.

Le associazioni possono avere uno stato che richiede la pulizia, ad esempio la chiusura della connessione, che viene gestita dal metodo Uncomplete(). Inoltre, il metodo Free() riporta semplicemente il suo stato iniziale cancellato. Questo metodo, in gran parte per comodità, attiva entrambi.

Vedi anche:
Finalizza(WEAVE_ERROR)

Finalizza

void Finalize(
  WEAVE_ERROR aErr
)

"Annulla il completamento" di un'associazione e liberala.

Le associazioni possono avere uno stato che richiede la pulizia, ad esempio la chiusura della connessione, che viene gestita dal metodo Uncomplete(). Inoltre, il metodo Free() riporta semplicemente il suo stato iniziale cancellato. Questo metodo, in gran parte per comodità, attiva 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:
Finalize(void)

Senza costi

void Free(
  void
)

Cancella lo stato di associazione.

Ripristina incondizionatamente lo stato originale di tutte le associazioni.

GetExchangeCtx

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

Produci un oggetto ExchangeContext da un'Binding.

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

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Gestisci l'errore di un'associazione.

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

Dettagli
Parametri
[in] aReport
Un riferimento a uno StatusReport che descrive l'errore.
Vedi anche:
CompleteConfirm(StatusReport &aReport).

Inizia

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 della destinazione dell'associazione.
Valori restituiti
WEAVE_NO_ERROR
In caso di successo.
WEAVE_ERROR_INVALID_ARGUMENT
Se l'associazione è specificata in modo insufficiente.

Inizia

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 della destinazione dell'associazione.
[in] aTransport
La specifica di trasporto, da WeaveTransportOption.
Valori restituiti
WEAVE_NO_ERROR
In caso di successo.
WEAVE_ERROR_INVALID_ARGUMENT
Se l'associazione è specificata in modo insufficiente.

Inizia

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

Inizializzare un oggetto Binding a un endpoint di servizio.

Questo è il modo in cui ti colleghi 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 del servizio locale. Nella maggior parte dei casi, questo processo non è visibile all'applicazione, ma significa che gli errori che si verificano più avanti durante il processo possono essere inviati, di solito tramite il relativo callback "Conferma", dopo, a volte molto dopo, la richiesta originale di utilizzare (e completare) l'associazione.

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

Inizia

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Inizializza un oggetto Binding con una WeaveConnection.

Dettagli
Parametri
[in] aConnection
Un puntatore a una WeaveConnection da utilizzare come base per l'associazione.
Valori restituiti
WEAVE_NO_ERROR
In caso di successo.
WEAVE_ERROR_INVALID_ARGUMENT
Se l'associazione è specificata in modo insufficiente.

IsComplete

bool IsComplete(
  void
)

Controlla se l'associazione è completa.

Dettagli
Restituisce
true se è completa, altrimenti false.
Vedi anche:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Il controllo dell'associazione è senza costi.

"Senza costi" in questo contesto significa semplicemente "ha un ID nodo peer definito". IsFree() dovrebbe essere considerato come il significato di "ha ricevuto Free() e non è più utilizzato da allora".

Dettagli
Restituisce
true se l'associazione è senza costi, altrimenti false.

UncompleteRequest

void UncompleteRequest(
  void
)

Causa l'incompleta dell'associazione.

Fondamentalmente, un'associazione sarà nello stato "incompleto" dopo che questo metodo è stato chiamato, ma, più sottilmente, anche qualsiasi stato pertinente non contenuto nell'associazione stessa, ad esempio la connessione TCP, deve essere ripulito. Le applicazioni potrebbero prendere in considerazione la chiamata a UncompleteRequest() come parte della pulizia in caso di errore.

Vedi anche:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Causa l'incompleta dell'associazione.

Fondamentalmente, un'associazione sarà nello stato "incompleto" dopo che questo metodo è stato chiamato, ma, più sottilmente, anche qualsiasi stato pertinente non contenuto nell'associazione stessa, ad esempio la connessione TCP, deve essere ripulito. Le applicazioni potrebbero prendere in considerazione la chiamata a UncompleteRequest() come parte della pulizia in caso di errore.

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

~Associazione

virtual  ~Binding(
  void
)

Il distruttore per gli oggetti Binding.

Cancella tutto lo stato interno E, se necessario, chiude le connessioni aperte.