En Google, luchamos por la equidad racial de la comunidad negra. Más información
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

nl :: Tejido:: Perfiles: DataManagement_Legacy :: Unión

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

La clase Binding gestiona el estado de las comunicaciones en nombre de una entidad de aplicación que utiliza Weave.

Resumen

Cuando una aplicación quiere usar Weave para comunicarse con una entidad remota, existe una amplia variedad de opciones. La clase Binding acorrala estas opciones y las organiza de tal manera que lo fácil es fácil y lo más difícil es al menos manejable. Las opciones cubiertas incluyen:

  • comunicación UDP unicast con un nodo par conocido.
  • Difusión UDP con "cualquier" nodo.
  • comunicación WRMP unicast con un nodo par conocido.
  • Comunicaciones TCP con un nodo par conocido.
  • Comunicaciones TCP con un punto final de servicio conocido utilizando una instancia de administrador de servicios para configurar las cosas.
  • Comunicaciones TCP basadas en una conexión preestablecida.

Constructores y Destructores

Binding (void)
El constructor predeterminado para vincular objetos.
~Binding (void)
El destructor para vincular objetos.

Tipos públicos

@165 {
kState_Incomplete = 0,
kState_Completing = 1,
kState_Complete = 2
}
enumeración
El conjunto de estados del objeto Binding .

Atributos públicos

mAuthMode
WeaveAuthMode
El modo de autenticación Weave que se utilizará.
mConnection
Un puntero a la conexión Weave actualmente en uso en este enlace.
mEngine
Un puntero al objeto ProtocolEngine relacionado con este enlace .
mPeerNodeId
uint64_t
El ID de nodo de 64 bits del destino de enlace.
mServiceMgr
Un puntero al objeto ServiceManager (opcional) que se utilizará para completar este enlace.
mState
uint8_t
El estado actual del objeto Binding .
mTransport
uint8_t
El transporte que se utilizará para completar este enlace .

Funciones publicas

CompleteConfirm ( WeaveConnection *aConnection)
void
Manejar la confirmación de una solicitud de vinculación.
CompleteConfirm ( StatusReport & aReport)
void
Manejar el error de una solicitud de vinculación.
CompleteConfirm (void)
void
Manejar la confirmación de una solicitud de vinculación.
CompleteRequest ( ProtocolEngine *aEngine)
Solicite la finalización de una vinculación.
Connect ( WeaveConnection *aConnection)
Complete un enlace TCP proporcionando una conexión completa.
Finalize (void)
void
"Descompletar" una encuadernación y liberarla.
Finalize ( WEAVE_ERROR aErr)
void
"Descompletar" una encuadernación y liberarla.
Free (void)
void
Borre el estado vinculante.
GetExchangeCtx ( WeaveExchangeManager *aExchangeMgr, void *aAppState)
Genere un objeto ExchangeContext a partir de un enlace .
IncompleteIndication ( StatusReport & aReport)
void
Manejar la falla de una encuadernación.
Init (const uint64_t & aPeerNodeId)
Inicialice un enlace con solo un ID de nodo.
Init (const uint64_t & aPeerNodeId, uint8_t aTransport)
Inicialice un objeto de enlace basado en el transporte y el ID del mismo nivel.
Init (const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inicialice un objeto Binding a un punto final de servicio.
Init ( WeaveConnection *aConnection)
Inicialice un objeto Binding con WeaveConnection .
IsComplete (void)
bool
Compruebe si una encuadernación está completa.
IsFree (void)
bool
El cheque es un enlace es gratis.
UncompleteRequest (void)
void
Causa que una encuadernación esté incompleta.
UncompleteRequest ( WEAVE_ERROR aErr)
void
Causa que una encuadernación esté incompleta.

Tipos públicos

@ 165

 @165

El conjunto de estados del objeto Binding .

Propiedades
kState_Complete

El estado de un enlace que está completo y listo para usar.

kState_Completing

El estado de un enlace que está en proceso de completarse.

kState_Incomplete

El estado inicial (y final) de un enlace .

Atributos públicos

mAuthMode

WeaveAuthMode mAuthMode

El modo de autenticación Weave que se utilizará.

(SOLO LECTURA)

Este es el modo de autenticación utilizado en todas las comunicaciones regidas por este enlace.

mConnection

WeaveConnection * mConnection

Un puntero a la conexión Weave actualmente en uso en este enlace.

(SOLO LECTURA)

Los enlaces TCP se pueden inicializar con una conexión desde el principio o pueden asignar una al finalizar.

mEngine

ProtocolEngine * mEngine

Un puntero al objeto ProtocolEngine relacionado con este enlace .

Un enlace generalmente se completa con respecto a un motor de protocolo particular, que se usa principalmente como una forma de acceder al MessageLayer. Aquí es donde lo seguimos.

mPeerNodeId

uint64_t mPeerNodeId

El ID de nodo de 64 bits del destino de enlace.

(SOLO LECTURA)

Cada enlace tiene una entidad de destino, que se nombra aquí. Además de un ID de nodo Weave, esto puede nombrar un punto final de servicio.

mServiceMgr

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

Un puntero al objeto ServiceManager (opcional) que se utilizará para completar este enlace.

(SOLO LECTURA)

Cuando se vincula al servicio Weave, se puede proporcionar un ID de punto final de servicio de 64 bits en el momento de la inicialización en lugar de un ID de nodo Weave. En este caso, también se requiere un objeto ServiceManager para completar el enlace. Los enlaces TCP o WRMP normales no requieren un objeto ServiceManager.

mState

uint8_t mState

El estado actual del objeto Binding .

Solo se puede ejecutar una operación "completa" a la vez y, en cualquier caso, si solicita completar un enlace completo, simplemente llama a la función de confirmación inmediatamente. La siguiente variable de estado rastrea el estado actual y actúa como bloqueo.

mTransport

uint8_t mTransport

El transporte que se utilizará para completar este enlace .

(SOLO LECTURA)

Los valores posibles para mTransport se definen en DMConstants.h.

Funciones publicas

Unión

 Binding(
  void
)

El constructor predeterminado para vincular objetos.

Borra todo el estado interno.

CompletoConfirmar

void CompleteConfirm(
  WeaveConnection *aConnection
)

Manejar la confirmación de una solicitud de vinculación.

Detalles
Parámetros
[in] aConnection
Un puntero a una WeaveConnection activa al objetivo de enlace.

CompletoConfirmar

void CompleteConfirm(
  StatusReport & aReport
)

Manejar el error de una solicitud de vinculación.

Detalles
Parámetros
[in] aReport
Una referencia a un objeto StatusReport que describe el error.

CompletoConfirmar

void CompleteConfirm(
  void
)

Manejar la confirmación de una solicitud de vinculación.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Solicite la finalización de una vinculación.

La finalización de una vinculación se lleva a cabo, al menos para las vinculaciones que requieren TCP, con respecto a un objeto ProtocolEngine en particular, que proporciona acceso a una instancia de ExchangeManager.

Detalles
Parámetros
[in] aEngine
Un puntero a un objeto ProtocolEngine en nombre del cual se realiza la finalización.
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
WEAVE_ERROR_INCORRECT_STATE
si la encuadernación ya se está completando.
WEAVE_ERROR_NO_MEMORY
Si se requiere una conexión y no hay ninguna disponible
Devoluciones
De lo contrario, cualquier WEAVE_ERROR regresó al intentar conectarse.

Conectar

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Complete un enlace TCP proporcionando una conexión completa.

No se puede utilizar un enlace TCP recién inicializado hasta que se haya completado. Normalmente, esto se hace a pedido cuando la aplicación intenta utilizar el enlace para enviar mensajes, pero también se puede completar explícitamente proporcionando una conexión Weave.

Detalles
Parámetros
[in] aConnection
Un puntero a WeaveConnection utilizado para completar el enlace.
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el enlace ya tiene una conexión.
WEAVE_ERROR_INVALID_ARGUMENT
Si la conexión es NULL.

Finalizar

void Finalize(
  void
)

"Descompletar" una encuadernación y liberarla.

Los enlaces pueden tener un estado que requiera limpieza, por ejemplo, cierre de conexión, que se maneja con el método Uncomplete () además del estado que simplemente se borra a su estado inicial mediante el método Free () . Este método, en gran parte por conveniencia, invoca a ambos.

Ver también:
Finalizar (WEAVE_ERROR)

Finalizar

void Finalize(
  WEAVE_ERROR aErr
)

"Descompletar" una encuadernación y liberarla.

Los enlaces pueden tener un estado que requiera limpieza, por ejemplo, cierre de conexión, que se maneja con el método Uncomplete () además del estado que simplemente se borra a su estado inicial mediante el método Free () . Este método, en gran parte por conveniencia, invoca a ambos.

Detalles
Parámetros
[in] aErr
Este código de error indica la causa de esta solicitud. Si no es WEAVE_NO_ERROR, la conexión TCP podría cancelarse.
Ver también:
Finalizar (anular)

Gratis

void Free(
  void
)

Borre el estado vinculante.

Devuelve incondicionalmente todos los estados vinculantes a su estado original.

GetExchangeCtx

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

Genere un objeto ExchangeContext a partir de un enlace .

Detalles
Parámetros
[in] aExchangeMgr
Un puntero al administrador de intercambio desde el que solicitar un contexto.
[in] aAppState
Un puntero vacío a un objeto de estado de aplicación que se almacenará en el contexto de intercambio para su uso posterior.
Devoluciones
un puntero a un objeto ExchangeContext o NULL en caso de error.

Incompleto Indicación

void IncompleteIndication(
  StatusReport & aReport
)

Manejar la falla de una encuadernación.

Este método se invoca y, a su vez, invoca a los manejadores de capa superior cuando el enlace falla DESPUÉS de la finalización, es decir, después de que CompleteConfirm () se haya invocado con un estado que denota éxito.

Detalles
Parámetros
[in] aReport
Una referencia a un StatusReport que describe lo que salió mal.
Ver también:
CompleteConfirm (Informe de estado y un Informe) .

En eso

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Inicialice un enlace con solo un ID de nodo.

Esto da como resultado un enlace con el transporte predeterminado configurado.

Detalles
Parámetros
[in] aPeerNodeId
Una referencia al ID de 64 bits del destino de enlace.
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si el enlace no está especificado.

En eso

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Inicialice un objeto de enlace basado en el transporte y el ID del mismo nivel.

Detalles
Parámetros
[in] aPeerNodeId
Una referencia al identificador de nodo de 64 bits del destino de enlace.
[in] aTransport
La especificación de transporte, de WeaveTransportOption.
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si el enlace no está especificado.

En eso

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

Inicialice un objeto Binding a un punto final de servicio.

Así es como se vincula a un punto final en particular en el servicio Nest. Un enlace de este tipo requiere un proceso de finalización de varias etapas, que puede incluir completar o actualizar la caché del directorio de servicios local. En su mayor parte, este proceso está oculto para la aplicación, pero significa que los errores que surjan más adelante en el proceso pueden entregarse, normalmente a través de la devolución de llamada de "confirmación" relevante, después, a veces mucho después, de la solicitud original para usar (y completar). la Unión.

Detalles
Parámetros
[in] aServiceEpt
Una referencia al identificador de 64 bits para el punto final de interés de Weave Service.
[in] aServiceMgr
Un puntero a la instancia del administrador de servicios para usar al buscar un nivel de servicio y conectarse a él.
[in] aAuthMode
El modo de autenticación que se utilizará para conectarse.
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si el enlace no está especificado.

En eso

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Inicialice un objeto Binding con WeaveConnection .

Detalles
Parámetros
[in] aConnection
Un puntero a WeaveConnection para usar como base para el enlace.
Valores devueltos
WEAVE_NO_ERROR
Sobre el éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si el enlace no está especificado.

Esta completo

bool IsComplete(
  void
)

Compruebe si una encuadernación está completa.

Detalles
Devoluciones
verdadero si está completo, falso en caso contrario.
Ver también:
CompleteRequest (ProtocolEngine * aEngine)

Está libre

bool IsFree(
  void
)

El cheque es un enlace es gratis.

"Gratis" en este contexto simplemente significa, "tiene un ID de nodo par definido". Se debe pensar que IsFree () significa "ha sido invocado Free () y no se ha utilizado desde entonces".

Detalles
Devoluciones
Es verdadero si el enlace es gratuito, falso en caso contrario.

UncompleteRequest

void UncompleteRequest(
  void
)

Causa que una encuadernación esté incompleta.

Básicamente, una vinculación estará en el estado "incompleto" después de que se haya llamado a este método pero, más sutilmente, cualquier estado relevante que no esté contenido en la vinculación en sí, por ejemplo, la conexión TCP, también debe limpiarse. Las aplicaciones pueden considerar invocar UncompleteRequest () como parte de la limpieza en caso de error.

Ver también:
UncompleteRequest (WEAVE_ERROR)

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Causa que una encuadernación esté incompleta.

Básicamente, una vinculación estará en el estado "incompleto" después de que se haya llamado a este método pero, más sutilmente, cualquier estado relevante que no esté contenido en la vinculación en sí, por ejemplo, la conexión TCP, también debe limpiarse. Las aplicaciones pueden considerar invocar UncompleteRequest () como parte de la limpieza en caso de error.

Detalles
Parámetros
[in] aErr
Si no es WEAVE_NO_ERROR, la conexión existente, si la hubiera, sería abortada en lugar de cerrarse correctamente.
Ver también:
UncompleteRequest (anulado)

~ Encuadernación

virtual  ~Binding(
  void
)

El destructor para vincular objetos.

Borra todo el estado interno Y, si es necesario, cierra las conexiones abiertas.