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 aplicación mediante Weave.

Resumen

Cuando una aplicación quiere usar Weave para comunicarse con una entidad remota, existe una gran variedad de opciones. La clase Binding guarda estas opciones y las organiza de manera que las cosas fáciles sean fáciles y las más difíciles sean, al menos, manejables. Entre las opciones que se incluyen, se incluyen las siguientes:

  • comunicación UDP de unidifusión con un nodo de intercambio de tráfico conocido.
  • Emisión UDP con nodo "cualquier"
  • comunicación unicast WRMP con un nodo de intercambio de tráfico conocido.
  • y las comunicaciones TCP con un nodo de intercambio de tráfico conocido.
  • comunicaciones TCP con un extremo de servicio conocido mediante el uso de una instancia de administrador de servicios para la configuración.
  • comunicaciones TCP basadas en una conexión preestablecida.

Constructores y destructores

Binding(void)
El constructor predeterminado para los objetos Binding.
~Binding(void)
Destructor de 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
Es 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 para el objeto ProtocolEngine relacionado con esta Binding.
mPeerNodeId
uint64_t
El ID del nodo de 64 bits del destino de vinculación.
mServiceMgr
Un puntero al objeto ServiceManager (opcional) que se usa para completar esta vinculación.
mState
uint8_t
El estado actual del objeto Binding.
mTransport
uint8_t
Es el transporte que se usa 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
Controla 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 que se complete una vinculación.
Connect(WeaveConnection *aConnection)
Proporciona una conexión completa para completar una vinculación TCP.
Finalize(void)
void
"Descompleta" una vinculación y libérala.
Finalize(WEAVE_ERROR aErr)
void
"Descompleta" una vinculación y libérala.
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
Controla las fallas 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 de par y el transporte.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inicializa un objeto Binding a un extremo de servicio.
Init(WeaveConnection *aConnection)
Inicializa un objeto Binding con una WeaveConnection.
IsComplete(void)
bool
Comprueba si una vinculación está completa.
IsFree(void)
bool
La verificación es 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 Vinculación que está completa y lista para usarse.

kState_Completing

Es el estado de una Vinculación que está en proceso de completarse.

kState_Incomplete

Estado inicial (y final) de una vinculación.

Atributos públicos

mAuthMode

WeaveAuthMode mAuthMode

Es el modo de autenticación de Weave que se usará.

(SOLO LECTURA)

Este es el modo de autenticación que se usa 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 cuando se complete el proceso.

mEngine

ProtocolEngine * mEngine

Un puntero para el objeto ProtocolEngine relacionado con esta Binding.

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

mPeerNodeId

uint64_t mPeerNodeId

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

(SOLO LECTURA)

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

mServiceMgr

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

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

(SOLO LECTURA)

Cuando se vincula 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 normales de TCP o WRMP 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 solicitas completar una vinculación completa, se llama inmediatamente a la función de confirmación. La siguiente variable de estado realiza un seguimiento del estado actual y actúa como bloqueo.

mTransport

uint8_t mTransport

Es el transporte que se usa 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 los 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 vinculación.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Controla la falla de una solicitud de vinculación.

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

CompleteConfirm

void CompleteConfirm(
  void
)

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

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Solicita que se complete 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 que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
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
Qué muestra
De lo contrario, se muestra cualquier WEAVE_ERROR cuando se intentaba establecer la conexión.

Conéctate

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

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

No se puede usar una vinculación 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 de forma explícita proporcionando una conexión de Weave.

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

Finalizar

void Finalize(
  void
)

"Descompleta" una vinculación y libérala.

Las vinculaciones pueden tener un estado que requiere limpieza, p.ej., el cierre de la conexión, que lo controla el método Uncomplete() y el estado que simplemente pasa a su estado inicial mediante el método Free(). Este método, en gran medida por conveniencia, invoca a ambos.

Consulta también:
Finalize(WEAVE_ERROR)

Finalizar

void Finalize(
  WEAVE_ERROR aErr
)

"Descompleta" una vinculación y libérala.

Las vinculaciones pueden tener un estado que requiere limpieza, p.ej., el cierre de la conexión, que lo controla el método Uncomplete() y el estado que simplemente pasa a su estado inicial mediante el método Free(). Este método, en gran medida por conveniencia, invoca a ambos.

Detalles
Parámetros
[in] aErr
Este código de error indica la causa de esta solicitud. De lo contrario, es posible que se anule la conexión TCP.
Consulta también:
Finalizar(void)

Gratis

void Free(
  void
)

Borra el estado de vinculación.

Restablece de forma incondicional todo el estado 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 puede solicitar 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.
Qué muestra
un puntero para un objeto ExchangeContext, o NULL en caso de error.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Controla las fallas de una vinculación.

Se invoca este método y, a su vez, invoca a los controladores de las capas superiores cuando la vinculación falla DESPUÉS de que se complete, es decir, después de que se haya invocado CompleteConfirm() con un estado que indique que se realizó correctamente.

Detalles
Parámetros
[in] aReport
Una referencia a un StatusReport que describe lo que salió mal.
Consulta también:
CompleteConfirm(StatusReport &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
Es una referencia al ID de 64 bits del destino de vinculación.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica de forma adecuada.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

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

Detalles
Parámetros
[in] aPeerNodeId
Es una referencia al identificador de nodo de 64 bits del destino de vinculación.
[in] aTransport
La especificación de transporte, de WeaveTransportOption.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica de forma adecuada.

Init

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

Inicializa un objeto Binding a un extremo de servicio.

Así es como te vinculas a un extremo en particular 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 su mayor parte, este proceso está oculto para la aplicación, pero significa que los errores que surgen más adelante en el proceso se pueden entregar, normalmente, a través de la devolución de llamada de confirmación correspondiente, después (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 usará para conectarse.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica de forma adecuada.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Inicializa un objeto Binding con una WeaveConnection.

Detalles
Parámetros
[in] aConnection
Un puntero para una WeaveConnection a fin de usar como base para la vinculación.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación es exitosa.
WEAVE_ERROR_INVALID_ARGUMENT
Si la vinculación no se especifica de forma adecuada.

IsComplete

bool IsComplete(
  void
)

Comprueba si una vinculación está completa.

Detalles
Qué muestra
true si está completo, de lo contrario, false.
Consulta también:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

La verificación es gratuita.

"Gratis" en este contexto simplemente significa "tiene un ID de nodo de intercambio de tráfico definido". IsFree() debe entenderse como el significado "ha llamado a Free() y no se ha usado desde entonces".

Detalles
Qué muestra
true si la vinculación es libre; de lo contrario, false.

UncompleteRequest

void UncompleteRequest(
  void
)

Hace que una vinculación esté incompleta.

Básicamente, una vinculación debe estar en el estado “incompleto” después de que se haya llamado a este método en ella, pero, de manera más sutil, también se debe limpiar cualquier estado relevante que no esté contenido en la vinculación en sí, p.ej., la conexión TCP. Las aplicaciones pueden considerar invocar UncompleteRequest() como parte de la limpieza en caso de error.

Consulta también:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Hace que una vinculación esté incompleta.

Básicamente, una vinculación debe estar en el estado “incompleto” después de que se haya llamado a este método en ella, pero, de manera más sutil, también se debe limpiar cualquier estado relevante que no esté contenido en la vinculación en sí, p.ej., la conexión TCP. Las aplicaciones pueden considerar invocar UncompleteRequest() como parte de la limpieza en caso de error.

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

~Vinculación

virtual  ~Binding(
  void
)

Destructor de objetos Binding.

Borra todos los estados internos Y, si es necesario, cierra las conexiones abiertas.