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

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

La clase Binding administra el estado de las comunicaciones en nombre de una entidad de la aplicación con Weave.

Resumen

Cuando una aplicación quiere usar Weave para comunicarse con una entidad remota, existe una amplia variedad de opciones. La clase Binding agrupa estas opciones y las organiza de tal manera que los elementos fáciles son sencillos y los más difíciles se pueden solucionar. Entre las opciones que se abordan, se incluyen las siguientes:

  • comunicación UDP unicast con un nodo de intercambio de tráfico conocido.
  • Transmisión UDP con “any” el nodo de inicio de sesión.
  • comunicación WRMP unidifusión con un nodo de intercambio de tráfico conocido.
  • comunicaciones TCP con un nodo de intercambio de tráfico conocido.
  • comunicaciones de TCP con un extremo de servicio conocido que usa una instancia del administrador de servicios para realizar la configuración.
  • comunicaciones TCP basadas en una conexión preestablecida.

Constructores y destructores

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

Tipos públicos

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

Atributos públicos

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

Funciones públicas

CompleteConfirm(WeaveConnection *aConnection)
void
Controla la confirmación de una solicitud de vinculación.
CompleteConfirm(StatusReport & aReport)
void
Soluciona la falla de una solicitud de vinculación.
CompleteConfirm(void)
void
Controla la confirmación de una solicitud de vinculación.
CompleteRequest(ProtocolEngine *aEngine)
Solicita la finalización de una vinculación.
Connect(WeaveConnection *aConnection)
Proporciona una conexión completa para completar una vinculación de TCP.
Finalize(void)
void
"Incompleto" una vinculación y liberarla.
Finalize(WEAVE_ERROR aErr)
void
"Incompleto" una vinculación y liberarla.
Free(void)
void
Borra el estado de vinculación.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Produce un objeto ExchangeContext a partir de una Binding.
IncompleteIndication(StatusReport & aReport)
void
Soluciona la falla de una vinculación.
Init(const uint64_t & aPeerNodeId)
Inicializa una vinculación con solo un ID de nodo.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Inicializa un objeto Binding según el ID y el transporte de par.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inicializa un objeto Binding en el extremo del servicio.
Init(WeaveConnection *aConnection)
Inicializa un objeto Binding con una WeaveConnection.
IsComplete(void)
bool
Verifica si una vinculación está completa.
IsFree(void)
bool
La verificación es una vinculación gratuita.
UncompleteRequest(void)
void
Hace que una vinculación esté incompleta.
UncompleteRequest(WEAVE_ERROR aErr)
void
Hace que una vinculación esté incompleta.

Tipos públicos

@165

 @165

El conjunto de estados del objeto Binding.

Propiedades
kState_Complete

Es el estado de una Binding que está completa y lista para usarse.

kState_Completing

El estado de una vinculación que está en proceso de completarse.

kState_Incomplete

El estado inicial (y final) de una Binding.

Atributos públicos

mAuthMode

WeaveAuthMode mAuthMode

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

(READ_ONLY)

Este es el modo de autenticación que se utiliza en todas las comunicaciones regidas por esta vinculación.

mConnection

WeaveConnection * mConnection

Un puntero para la conexión de Weave que se usa actualmente en esta vinculación.

(SOLO LECTURA)

Las vinculaciones de TCP pueden inicializarse con una conexión de inmediato o pueden asignar una en el momento de la finalización.

.

mEngine

ProtocolEngine * mEngine

Un puntero al objeto ProtocolEngine relacionado con esta Vinculación

Por lo general, una vinculación se completa con respecto a un motor de protocolo específico, que se usa principalmente como una forma de acceder a MessageLayer. Aquí es donde hacemos un seguimiento.

mPeerNodeId

uint64_t mPeerNodeId

El ID de nodo de 64 bits del destino de vinculación.

(SOLO LECTURA)

Cada Vinculación tiene una entidad de destino, que se nombra aquí. Además de un ID de nodo de Weave, esto puede nombrar un extremo de servicio.

mServiceMgr

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

Un puntero al objeto ServiceManager (opcional) que se usará para completar esta vinculación.

(SOLO LECTURA)

Cuando se realiza la vinculación al servicio de Weave, se puede proporcionar un ID de extremo del servicio de 64 bits en el momento de la inicialización en lugar de un ID de nodo de Weave. En este caso, también se requiere un objeto ServiceManager para completar la vinculación. Las vinculaciones TCP o WRMP normales no requieren un objeto ServiceManager.

mState

uint8_t mState

El estado actual del objeto Binding.

Solo un elemento “completado” la operación puede ejecutarse a la vez y, en cualquier caso, si solicitas completar una vinculación completada, solo llama a la función de confirmación de inmediato. La siguiente variable de estado realiza un seguimiento del estado actual y actúa como un bloqueo.

mTransport

uint8_t mTransport

El transporte que se usará para completar esta Vinculación.

(SOLO LECTURA)

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

Funciones públicas

Vinculación

 Binding(
  void
)

El constructor predeterminado para objetos Binding.

Borra todo el estado interno.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

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

Detalles
Parámetros
[in] aConnection
Un puntero para una WeaveConnection activa para el destino de la vinculación.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Soluciona la falla de una solicitud de vinculación.

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

CompleteConfirm

void CompleteConfirm(
  void
)

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

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Solicita la finalización de una vinculación.

La finalización de una vinculación se realiza, al menos para las vinculaciones que requieren TCP, con respecto a un objeto ProtocolEngine específico, 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 de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_INCORRECT_STATE
si la vinculación ya se está completando.
WEAVE_ERROR_NO_MEMORY
Si se requiere una conexión y no hay ninguna disponible
Resultado que se muestra
De lo contrario, es posible que se muestre cualquier WEAVE_ERROR mientras se intentaba establecer la conexión.

Conectar

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Proporciona una conexión completa para completar una vinculación TCP.

No se puede usar una vinculación de TCP recién inicializada hasta que se complete. Normalmente, esto se hace a pedido cuando la aplicación intenta usar la vinculación para enviar mensajes, pero también se puede completar explícitamente proporcionando una conexión de Weave.

Detalles
Parámetros
[in] aConnection
Un puntero para una WeaveConnection que se usa para completar la vinculación.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_INCORRECT_STATE
Si la vinculación ya tiene conexión.
WEAVE_ERROR_INVALID_ARGUMENT
Si la conexión es NULL.

Finalizar

void Finalize(
  void
)

"Incompleto" una vinculación y liberarla.

Las vinculaciones pueden tener un estado que requiera limpieza, p.ej., el cierre de la conexión, que se controla con el método Uncomplete(), además del estado que el método Free() simplemente borra a su estado inicial. Este método, en gran medida, por razones de conveniencia, invoca ambos.

También:
Finalizar(WEAVE_ERROR)

Finalizar

void Finalize(
  WEAVE_ERROR aErr
)

"Incompleto" una vinculación y liberarla.

Las vinculaciones pueden tener un estado que requiera limpieza, p.ej., el cierre de la conexión, que se controla con el método Uncomplete(), además del estado que el método Free() simplemente borra a su estado inicial. Este método, en gran medida, por razones de conveniencia, invoca ambos.

Detalles
Parámetros
[in] aErr
Este código de error indica la causa de esta solicitud. Si no se establece en WEAVE_NO_ERROR, es posible que se anule la conexión TCP.
También:
Finalizar(void)

Gratis

void Free(
  void
)

Borra el estado de vinculación.

De manera incondicional, muestra todos los estados de vinculación a su estado original.

GetExchangeCtx

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

Produce un objeto ExchangeContext a partir de una Binding.

Detalles
Parámetros
[in] aExchangeMgr
Un puntero al administrador de intercambio desde el que se debe 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.
Resultado que se muestra
un puntero a un objeto ExchangeContext, o NULL si se produce un error.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Soluciona la falla de una vinculación.

Este método se invoca y, a su vez, invoca controladores de capas superiores cuando la vinculación falla DESPUÉS de completarse, es decir, después de que se invoca CompleteConfirm() con un estado que indique que la vinculación es correcta.

Detalles
Parámetros
[in] aReport
Es una referencia a un StatusReport que describe qué salió mal.
Consulta también:
CompleteConfirm(StatusReport &amp;aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Inicializa una vinculación con solo un ID de nodo.

Esto da como resultado una vinculación con el transporte predeterminado configurado.

Detalles
Parámetros
[in] aPeerNodeId
Una referencia al ID de 64 bits del destino de vinculación.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica demasiado.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Inicializa un objeto Binding según el ID y el transporte de par.

Detalles
Parámetros
[in] aPeerNodeId
Una referencia al identificador de nodo de 64 bits del destino de vinculación.
[in] aTransport
La especificación de transporte, de WeaveTransportOption.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica demasiado.

Init

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

Inicializa un objeto Binding en el extremo del servicio.

Así es como te vinculas a un extremo específico en el servicio de Nest. Una vinculación de este tipo requiere un proceso de finalización de varias etapas, que puede incluir la propagación o la actualización de la caché del directorio de servicios local. En la mayoría de los casos, este proceso está oculto para la aplicación, pero significa que los errores que surjan más adelante en el proceso podrían entregarse, normalmente a través de la "confirmación" pertinente. después (y a veces mucho después) de la solicitud original para usar (y completar) la vinculación.

Detalles
Parámetros
[in] aServiceEpt
Es una referencia al identificador de 64 bits para el extremo de interés del servicio de Weave.
[in] aServiceMgr
Un puntero a la instancia del administrador de servicios para buscar un nivel de servicio y conectarse a él.
[in] aAuthMode
El modo de autenticación que se usa para conectarse.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica demasiado.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Inicializa un objeto Binding con una WeaveConnection.

Detalles
Parámetros
[in] aConnection
Un puntero para una clase WeaveConnection que se usará como base para la vinculación.
Valores de retorno
WEAVE_NO_ERROR
Si tiene éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica demasiado.

IsComplete

bool IsComplete(
  void
)

Verifica si una vinculación está completa.

Detalles
Resultado que se muestra
true si está completa; de lo contrario, false.
También:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

La verificación es una vinculación gratuita.

"Gratis" significa que tiene un nodo de par definido “ID”. IsFree() should be thought of as meaning &quot;has had Free() llamado y no se usa desde entonces".

Detalles
Resultado que se muestra
true si la vinculación es libre; de lo contrario, false.

UncompleteRequest

void UncompleteRequest(
  void
)

Hace que una vinculación quede incompleta.

Fundamentalmente, una vinculación debe estar en el estado "incompleto" después de que se haya llamado a este método, pero, de forma más sutil, cualquier estado relevante que no esté contenido en la vinculación en sí, p.ej., o de TCP, también debe limpiarse. Las aplicaciones pueden considerar invocar a UncompleteRequest() como parte de la limpieza de errores.

También:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Hace que una vinculación quede incompleta.

Fundamentalmente, una vinculación debe estar en el estado "incompleto" después de que se haya llamado a este método, pero, de forma más sutil, cualquier estado relevante que no esté contenido en la vinculación en sí, p.ej., conexión TCP, también debe limpiarse. Las aplicaciones pueden considerar invocar a UncompleteRequest() como parte de la limpieza de errores.

Detalles
Parámetros
[in] aErr
Si no fuera WEAVE_NO_ERROR, la conexión existente, si la hubiera, se anularía en lugar de cerrarse correctamente.
También:
UncompleteRequest(void)

~Vinculación

virtual  ~Binding(
  void
)

El destructor para objetos Binding.

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