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

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

A classe Binding gerencia o estado de comunicações em nome de uma entidade de aplicativo usando o Weave.

Resumo

Quando um aplicativo deseja usar o Weave para se comunicar com uma entidade remota, há uma ampla variedade de opções. A classe Binding organiza essas opções e as organiza de maneira que o material mais fácil seja fácil e o mais difícil seja pelo menos tratável. As opções são:

  • comunicação unicast UDP com um nó de peering conhecido.
  • Transmissão UDP com "qualquer" nó.
  • comunicação WRMP unicast com um nó de peering conhecido.
  • que se comunicam por TCP com um nó de peering conhecido.
  • Comunicações TCP com um endpoint de serviço conhecido usando uma instância do gerenciador de serviços para configuração.
  • comunicações TCP baseadas em uma conexão pré-estabelecida.

Construtores e destrutores

Binding(void)
O construtor padrão para objetos Binding.
~Binding(void)
O destrutor de objetos Binding.

Tipos públicos

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

Atributos públicos

mAuthMode
WeaveAuthMode
O modo de autenticação do Weave a ser usado.
mConnection
Um ponteiro para a conexão Weave atualmente em uso nesta vinculação.
mEngine
Um ponteiro para o objeto ProtocolEngine relacionado a esta Binding.
mPeerNodeId
uint64_t
O ID do nó de 64 bits do destino de vinculação.
mServiceMgr
Um ponteiro para o objeto ServiceManager (opcional) a ser usado na conclusão desta vinculação.
mState
uint8_t
O estado atual do objeto Binding.
mTransport
uint8_t
O transporte a ser usado para concluir esta Vinculação.

Funções públicas

CompleteConfirm(WeaveConnection *aConnection)
void
Processar a confirmação de uma solicitação de vinculação.
CompleteConfirm(StatusReport & aReport)
void
Lidar com a falha de uma solicitação de vinculação.
CompleteConfirm(void)
void
Processar a confirmação de uma solicitação de vinculação.
CompleteRequest(ProtocolEngine *aEngine)
Solicite a conclusão de uma vinculação.
Connect(WeaveConnection *aConnection)
Conclua uma vinculação TCP fornecendo uma conexão completa.
Finalize(void)
void
Descompletar uma vinculação e liberá-la.
Finalize(WEAVE_ERROR aErr)
void
Descompletar uma vinculação e liberá-la.
Free(void)
void
Limpe o estado da vinculação.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Produza um objeto ExchangeContext de uma Binding.
IncompleteIndication(StatusReport & aReport)
void
Lidar com a falha de uma vinculação.
Init(const uint64_t & aPeerNodeId)
Inicialize uma Binding apenas com um ID de nó.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Inicialize um objeto Binding com base no código e no transporte de peering.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inicialize um objeto Binding em um endpoint de serviço.
Init(WeaveConnection *aConnection)
Inicialize um objeto Binding com uma WeaveConnection.
IsComplete(void)
bool
Verifique se uma vinculação foi concluída.
IsFree(void)
bool
A verificação de vinculação é sem custo financeiro.
UncompleteRequest(void)
void
Fazer com que uma vinculação fique incompleta.
UncompleteRequest(WEAVE_ERROR aErr)
void
Fazer com que uma vinculação fique incompleta.

Tipos públicos

@165

 @165

O conjunto de estados do objeto Binding.

Propriedades
kState_Complete

O estado de uma Binding que está completa e pronta para uso.

kState_Completing

O estado de uma Binding que está em processo de conclusão.

kState_Incomplete

O estado inicial (e final) de uma Binding.

Atributos públicos

mAuthMode

WeaveAuthMode mAuthMode

O modo de autenticação do Weave a ser usado.

(SOMENTE_LEITURA)

Este é o modo de autenticação usado em todas as comunicações regidas por esta vinculação.

mConnection

WeaveConnection * mConnection

Um ponteiro para a conexão Weave atualmente em uso nesta vinculação.

(SOMENTE LEITURA)

As vinculações TCP podem ser inicializadas com uma conexão imediatamente ou podem alocar uma no momento da conclusão.

mEngine

ProtocolEngine * mEngine

Um ponteiro para o objeto ProtocolEngine relacionado a esta Binding.

Uma vinculação geralmente é concluída em relação a um mecanismo de protocolo específico, que é usado principalmente como uma forma de acessar a MessageLayer. É aqui que nós o controlamos.

mPeerNodeId

uint64_t mPeerNodeId

O ID do nó de 64 bits do destino de vinculação.

(SOMENTE LEITURA)

Cada Binding tem uma entidade de destino, que é nomeada aqui. Além de um ID de nó do Weave, é possível nomear um endpoint de serviço.

mServiceMgr

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

Um ponteiro para o objeto ServiceManager (opcional) a ser usado na conclusão desta vinculação.

(SOMENTE LEITURA)

Ao vincular ao serviço Weave, um ID de endpoint do serviço de 64 bits pode ser fornecido no momento da inicialização no lugar de um ID de nó do Weave. Nesse caso, também é necessário um objeto ServiceManager para concluir a vinculação. As vinculações normais de TCP ou WRMP não exigem um objeto ServiceManager.

mState

uint8_t mState

O estado atual do objeto Binding.

Apenas uma operação "concluída" pode ser executada por vez. Em qualquer caso, se você solicitar a conclusão de uma vinculação concluída, a função de confirmação será chamada imediatamente. A variável abaixo rastreia o estado atual e atua como um bloqueio.

mTransport

uint8_t mTransport

O transporte a ser usado para concluir esta Vinculação.

(SOMENTE LEITURA)

Os valores possíveis para mTransport são definidos em DMConstants.h.

Funções públicas

Vinculação

 Binding(
  void
)

O construtor padrão para objetos Binding.

Limpa todo o estado interno.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Processar a confirmação de uma solicitação de vinculação.

Detalhes
Parâmetros
[in] aConnection
Um ponteiro para um WeaveConnection ativo para o destino da vinculação.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Lidar com a falha de uma solicitação de vinculação.

Detalhes
Parâmetros
[in] aReport
Uma referência a um objeto StatusReport que descreve a falha.

CompleteConfirm

void CompleteConfirm(
  void
)

Processar a confirmação de uma solicitação de vinculação.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Solicite a conclusão de uma vinculação.

A conclusão de uma vinculação é, pelo menos, para vinculações que exigem TCP, realizada em relação a um objeto ProtocolEngine específico, que fornece acesso a uma instância do ExchangeManager.

Detalhes
Parâmetros
[in] aEngine
Um ponteiro para um objeto ProtocolEngine em nome do qual a conclusão está sendo realizada.
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
WEAVE_ERROR_INCORRECT_STATE
se a vinculação já estiver sendo concluída.
WEAVE_ERROR_NO_MEMORY
Se uma conexão for necessária e nenhuma estiver disponível
Retorna
Caso contrário, qualquer WEAVE_ERROR será retornado ao tentar se conectar.

Conectar

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Conclua uma vinculação TCP fornecendo uma conexão completa.

Uma vinculação TCP recém-inicializada não pode ser usada até que seja concluída. Normalmente, isso é feito sob demanda quando o aplicativo tenta usar a vinculação para enviar mensagens, mas também pode ser concluído explicitamente fornecendo uma conexão do Weave.

Detalhes
Parâmetros
[in] aConnection
Um ponteiro para um WeaveConnection usado para concluir a vinculação.
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
WEAVE_ERROR_INCORRECT_STATE
Se a vinculação já tiver uma conexão.
WEAVE_ERROR_INVALID_ARGUMENT
Se a conexão for NULL.

Finalizar

void Finalize(
  void
)

Descompletar uma vinculação e liberá-la.

As vinculações podem ter um estado que requer limpeza, por exemplo, o fechamento da conexão, que é processado pelo método Uncomplete(), além do estado que é simplesmente apagado para o estado inicial pelo método Free(). Esse método, em grande parte, por conveniência, invoca ambos.

Consulte também:
Finalize(WEAVE_ERROR)

Finalizar

void Finalize(
  WEAVE_ERROR aErr
)

Descompletar uma vinculação e liberá-la.

As vinculações podem ter um estado que requer limpeza, por exemplo, o fechamento da conexão, que é processado pelo método Uncomplete(), além do estado que é simplesmente apagado para o estado inicial pelo método Free(). Esse método, em grande parte, por conveniência, invoca ambos.

Detalhes
Parâmetros
[in] aErr
Esse código de erro indica a causa dessa solicitação. Se não for WEAVE_NO_ERROR, a conexão TCP pode ser cancelada.
Consulte também:
Finalizar(nulo)

Sem custo financeiro

void Free(
  void
)

Limpe o estado da vinculação.

Retornar incondicionalmente todo o estado de vinculação ao estado original.

GetExchangeCtx

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

Produza um objeto ExchangeContext de uma Binding.

Detalhes
Parâmetros
[in] aExchangeMgr
Um ponteiro para o gerenciador de trocas do qual solicitar um contexto.
[in] aAppState
Um ponteiro vazio para um objeto de estado do aplicativo a ser armazenado no contexto de troca para uso posterior.
Retorna
um ponteiro para um objeto ExchangeContext, ou NULL em caso de falha.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Lidar com a falha de uma vinculação.

Esse método é invocado e, por sua vez, invoca gerenciadores de camada superior quando a vinculação falha DEPOIS da conclusão, ou seja, depois que CompleteConfirm() é invocado com um status que indica sucesso.

Detalhes
Parâmetros
[in] aReport
Uma referência para um StatusReport que descreve o que deu errado.
Consulte também:
CompleteConfirm(StatusReport &aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Inicialize uma Binding apenas com um ID de nó.

Isso resulta em uma vinculação com o transporte padrão configurado.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao código de 64 bits do destino de vinculação.
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
WEAVE_ERROR_INVALID_ARGUMENT
Se a vinculação for subespecificada.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Inicialize um objeto Binding com base no código e no transporte de peering.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao identificador de nó de 64 bits do destino de vinculação.
[in] aTransport
A especificação de transporte, de WeaveTransportOption.
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
WEAVE_ERROR_INVALID_ARGUMENT
Se a vinculação for subespecificada.

Init

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

Inicialize um objeto Binding em um endpoint de serviço.

É assim que você se vincula a um endpoint específico no serviço Nest. Uma vinculação desse tipo requer um processo de conclusão em vários estágios, que pode incluir o preenchimento ou a atualização do cache do diretório de serviços local. Na maioria das vezes, esse processo fica oculto do aplicativo, mas significa que erros surgidos posteriormente no processo podem ser entregues, normalmente por meio do retorno de chamada de "confirmação" relevante, depois, às vezes muito depois, da solicitação original para usar (e concluir) a vinculação.

Detalhes
Parâmetros
[in] aServiceEpt
Uma referência ao identificador de 64 bits para o endpoint do serviço Weave desejado.
[in] aServiceMgr
Um ponteiro para a instância do gerenciador de serviços a ser usado para procurar um nível de serviço e se conectar a ele.
[in] aAuthMode
O modo de autenticação a ser usado na conexão.
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
WEAVE_ERROR_INVALID_ARGUMENT
Se a vinculação for subespecificada.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Inicialize um objeto Binding com uma WeaveConnection.

Detalhes
Parâmetros
[in] aConnection
Um ponteiro para um WeaveConnection a ser usado como base para a vinculação.
Valores de retorno
WEAVE_NO_ERROR
Se der certo.
WEAVE_ERROR_INVALID_ARGUMENT
Se a vinculação for subespecificada.

IsComplete

bool IsComplete(
  void
)

Verifique se uma vinculação foi concluída.

Detalhes
Retorna
verdadeiro se estiver completo; caso contrário, será falso.
Consulte também:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

A verificação de vinculação é sem custo financeiro.

Neste contexto, "sem custo financeiro" significa apenas que tem um ID de nó de peering definido. IsFree() deve ser entendido como “se o Free() tiver sido chamado e não foi usado desde então”.

Detalhes
Retorna
verdadeiro se a vinculação for livre. Caso contrário, será falso.

UncompleteRequest

void UncompleteRequest(
  void
)

Fazer com que uma vinculação fique incompleta.

Fundamentalmente, uma vinculação deve estar no estado "incompleto" depois que esse método for chamado, mas, de forma mais sutil, qualquer estado relevante que não esteja contido na própria vinculação, por exemplo, conexão TCP, também deve ser limpo. Os aplicativos podem considerar invocar UncompleteRequest() como parte da limpeza em caso de erro.

Consulte também:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Fazer com que uma vinculação fique incompleta.

Fundamentalmente, uma vinculação deve estar no estado "incompleto" depois que esse método for chamado, mas, de forma mais sutil, qualquer estado relevante que não esteja contido na própria vinculação, por exemplo, conexão TCP, também deve ser limpo. Os aplicativos podem considerar invocar UncompleteRequest() como parte da limpeza em caso de erro.

Detalhes
Parâmetros
[in] aErr
Se não for WEAVE_NO_ERROR, a conexão existente, se houver, seria cancelada, em vez de fechada corretamente.
Consulte também:
UncompleteRequest(void)

~Vinculação

virtual  ~Binding(
  void
)

O destrutor de objetos Binding.

Limpa todo o estado interno E, se necessário, fecha conexões abertas.