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

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

La encuadernación de clase administra el estado de las comunicaciones en nombre de una entidad de aplicación usando la armadura.

Resumen

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

  • comunicación UDP de unidifusión 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 por defecto para la encuadernación objetos.
~Binding (void)
El destructor para Encuadernación objetos.

Tipos públicos

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

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 a la ProtocolEngine objeto relacionado con este encuadernación .
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
La corriente de encuadernación estado del objeto.
mTransport
uint8_t
El transporte a utilizar en la realización de esta encuadernación .

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)
Producir un ExchangeContext objeto desde una Binding .
IncompleteIndication ( StatusReport & aReport)
void
Manejar la falla de una encuadernación.
Init (const uint64_t & aPeerNodeId)
Inicialice un Encuadernación con sólo un ID de nodo.
Init (const uint64_t & aPeerNodeId, uint8_t aTransport)
Inicialice un Binding objeto basado en ID de pares y el transporte.
Init (const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inicializar una unión objeto a un extremo de servicio.
Init ( WeaveConnection *aConnection)
Inicialice un Encuadernación objeto con un WeaveConnection .
IsComplete (void)
bool
Compruebe si una encuadernación está completa.
IsFree (void)
bool
El cheque es un enlace es gratis.
UncompleteRequest (void)
void
Hacer que una encuadernación esté incompleta.
UncompleteRequest ( WEAVE_ERROR aErr)
void
Hacer que una encuadernación esté incompleta.

Tipos públicos

@ 165

 @165

El conjunto de encuadernación estados de objetos.

Propiedades
kState_Complete

El estado de una unión que está completo y listo para su uso.

kState_Completing

El estado de una unión que está en el proceso de ser completado.

kState_Incomplete

El estado inicial (y final) de un Binding .

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 en el momento de la finalización.

mEngine

ProtocolEngine * mEngine

Un puntero a la ProtocolEngine objeto relacionado con este encuadernación .

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 encuadernación 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

La corriente de encuadernación estado del objeto.

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 de inmediato. La siguiente variable de estado rastrea el estado actual y actúa como bloqueo.

mTransport

uint8_t mTransport

El transporte a utilizar en la realización de esta encuadernación .

(SOLO LECTURA)

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

Funciones publicas

Unión

 Binding(
  void
)

El constructor por defecto para la encuadernación 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 activa WeaveConnection a la diana de unión.

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.

Terminación de un de unión es, por lo menos para los enlaces que requieren TCP, llevadas a cabo con respecto a un determinado ProtocolEngine objeto, que proporciona acceso a una instancia ExchangeManager.

Detalles
Parámetros
[in] aEngine
Un puntero a una ProtocolEngine objeto en nombre de la cual se está realizando la terminació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 una WeaveConnection utiliza para completar la unión.
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.

Bindings pueden tener estado que requiere limpieza, por ejemplo, cierre de la conexión, que se maneja por el método uncomplete () además de estado que está simplemente borra a su estado inicial por la libre () método. 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.

Bindings pueden tener estado que requiere limpieza, por ejemplo, cierre de la conexión, que se maneja por el método uncomplete () además de estado que está simplemente borra a su estado inicial por la libre () método. 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)

Libre

void Free(
  void
)

Borre el estado vinculante.

Devuelve incondicionalmente todos los estados vinculantes a su estado original.

GetExchangeCtx

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

Producir un ExchangeContext objeto desde una Binding .

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 la aplicación que se almacenará en el contexto de intercambio para su uso posterior.
Devoluciones
un puntero a un ExchangeContext objeto, o NULL en caso de error.

Indicación incompleta

void IncompleteIndication(
  StatusReport & aReport
)

Manejar la falla de una encuadernación.

Este método se invoca y, a su vez, invoca los manipuladores de capas superiores cuando la unión falla después de la terminación, es decir, después CompleteConfirm () ha sido invocado con un éxito que denota de estado.

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

En eso

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Inicialice un Encuadernación con sólo 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 Binding objeto basado en ID de pares y el transporte.

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
)

Inicializar una unión objeto a un extremo 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 memoria caché del directorio de servicios local. En su mayor parte, este proceso está oculto para la aplicación, pero significa que los errores que surgen 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 que se utilizará para 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 Encuadernación objeto con un WeaveConnection .

Detalles
Parámetros
[in] aConnection
Un puntero a una WeaveConnection para utilizar como base para la unión ..
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 de pares definido". IsFree () debe ser considerado en el sentido de "libre ha tenido () llamada en él y no se ha utilizado desde entonces."

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

UncompleteRequest

void UncompleteRequest(
  void
)

Hacer 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 solicitudes se pueden considerar invocando UncompleteRequest () como parte de la limpieza en caso de error.

Ver también:
UncompleteRequest (WEAVE_ERROR)

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Hacer 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 solicitudes se pueden considerar invocando 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, se abortaría en lugar de cerrar correctamente.
Ver también:
UncompleteRequest (anulado)

~ Encuadernación

virtual  ~Binding(
  void
)

El destructor para Encuadernación objetos.

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