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

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

A classe Binding gerencia o estado das 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 encurrala essas opções e as organiza de modo que as coisas fáceis sejam fáceis e as mais difíceis sejam pelo menos tratáveis. As opções abordadas incluem:

  • 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.
  • comunicações TCP com um nó de peering conhecido.
  • comunicações TCP com um endpoint de serviço conhecido usando uma instância de gerenciador de serviços para configurar.
  • Comunicações TCP com base em uma conexão pré-estabelecida.

Construtores e destruidores

Binding(void)
O construtor padrão para objetos Binding.
~Binding(void)
O destrutor para 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 do Weave atualmente em uso nesta vinculação.
mEngine
Um ponteiro para o objeto ProtocolEngine relacionado a Binding.
mPeerNodeId
uint64_t
O ID do nó de 64 bits do destino da vinculação.
mServiceMgr
Um ponteiro para o objeto ServiceManager (opcional) a ser usado na conclusão dessa vinculação.
mState
uint8_t
O estado atual do objeto Binding.
mTransport
uint8_t
O transporte a ser usado para concluir esta Binding.

Funções públicas

CompleteConfirm(WeaveConnection *aConnection)
void
Processar a confirmação de uma solicitação de vinculação.
CompleteConfirm(StatusReport & aReport)
void
Processar 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)
Solicita a conclusão de uma vinculação.
Connect(WeaveConnection *aConnection)
Conclua uma vinculação TCP fornecendo uma conexão concluída.
Finalize(void)
void
"Não concluído" e liberá-la.
Finalize(WEAVE_ERROR aErr)
void
"Não concluído" e liberá-la.
Free(void)
void
Limpe o estado da vinculação.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Produza um objeto ExchangeContext de um Binding.
IncompleteIndication(StatusReport & aReport)
void
Lide com a falha de uma vinculação.
Init(const uint64_t & aPeerNodeId)
Inicialize uma Binding com apenas um ID de nó.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Inicialize um objeto Binding com base no transporte e no ID de apps semelhantes.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inicialize um objeto Binding para 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 se a vinculação é sem custo financeiro.
UncompleteRequest(void)
void
Fazem com que uma vinculação fique incompleta.
UncompleteRequest(WEAVE_ERROR aErr)
void
Fazem com que uma vinculação fique incompleta.

Tipos públicos

a 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.

(READ_ONLY)

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 do Weave atualmente em uso nesta vinculação.

(SOMENTE LEITURA)

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

mEngine

ProtocolEngine * mEngine

Um ponteiro para o objeto ProtocolEngine relacionado a 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 acompanhamos isso.

mPeerNodeId

uint64_t mPeerNodeId

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

(SOMENTE LEITURA)

Cada Binding tem uma entidade de destino, que é nomeada aqui. Além de um ID de nó do Weave, isso pode 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 dessa vinculação.

(SOMENTE LEITURA)

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

mState

uint8_t mState

O estado atual do objeto Binding.

Apenas um status "concluído" operação pode ser executada ao mesmo tempo e, em qualquer caso, se você pedir para completar uma vinculação concluída, ele apenas chamará a função de confirmação imediatamente. A variável de estado abaixo rastreia o estado atual e funciona como um bloqueio.

mTransport

uint8_t mTransport

O transporte a ser usado para concluir esta Binding.

(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
)

Processar 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
)

Solicita 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 a operação for bem-sucedida.
WEAVE_ERROR_INCORRECT_STATE
se a vinculação já estiver sendo concluída.
WEAVE_ERROR_NO_MEMORY
Se for necessária uma conexão e nenhuma estiver disponível
Retornos
Caso contrário, qualquer WEAVE_ERROR retornado ao tentar se conectar.

Connect

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Conclua uma vinculação TCP fornecendo uma conexão concluída.

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 realizado 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 a operação for bem-sucedida.
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
)

"Não concluído" e liberá-la.

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

Confira também:
Finalizar(WEAVE_ERROR)

Finalizar

void Finalize(
  WEAVE_ERROR aErr
)

"Não concluído" e liberá-la.

As vinculações podem ter um estado que requer limpeza, por exemplo, encerramento da conexão, que é tratado pelo método Uncomplete(), além do estado que é simplesmente apagado para seu 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 abortada.
Confira também:
Finalizar(nulo)

Gratuito

void Free(
  void
)

Limpar o estado da vinculação.

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

GetExchangeCtx

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

Produza um objeto ExchangeContext de um 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 da troca para uso posterior.
Retornos
um ponteiro para um objeto ExchangeContext ou NULL em caso de falha.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Lide 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 APÓS a conclusão, ou seja, depois que CompleteConfirm() é chamado com um status indicando sucesso.

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

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Inicialize uma Binding com apenas 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 ID de 64 bits do destino da vinculação.
Valores de retorno
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
WEAVE_ERROR_INVALID_ARGUMENT
Se a vinculação estiver subespecificada.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Inicialize um objeto Binding com base no transporte e no ID de apps semelhantes.

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

Init

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

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

É assim que você vincula 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 os erros que surgem posteriormente no processo podem ser entregues, normalmente por meio do comando "confirm" 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 de interesse do serviço Weave.
[in] aServiceMgr
Um ponteiro para a instância do gerenciador de serviços a ser usada ao 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 a operação for bem-sucedida.
WEAVE_ERROR_INVALID_ARGUMENT
Se a vinculação estiver 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 a operação for bem-sucedida.
WEAVE_ERROR_INVALID_ARGUMENT
Se a vinculação estiver subespecificada.

IsComplete

bool IsComplete(
  void
)

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

Detalhes
Retornos
verdadeiro se estiver completo, caso contrário é falso.
Confira também:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

A verificação se a vinculação é sem custo financeiro.

"Sem custo financeiro" neste contexto significa: "tem um nó de peering definido ID". IsFree() should be thought of as meaning &quot;has had Free() chamado e não é usado desde então".

Detalhes
Retornos
verdadeiro se a vinculação for livre, caso contrário é falso.

UncompleteRequest

void UncompleteRequest(
  void
)

Fazem com que uma vinculação fique incompleta.

Basicamente, uma vinculação deve estar no estado "incompleto" após esse método ter sido chamado, mas, de maneira mais sutil, qualquer estado relevante não contido na própria vinculação, por exemplo, conexão TCP, também devem ser limpos. Os aplicativos podem considerar invocar UncompleteRequest() como parte da limpeza em caso de erro.

Confira também:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Fazem com que uma vinculação fique incompleta.

Basicamente, uma vinculação deve estar no estado "incompleto" após esse método ter sido chamado, mas, de maneira mais sutil, qualquer estado relevante não contido na própria vinculação, por exemplo, conexão TCP, também devem ser limpos. 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, será abortada em vez de fechada normalmente.
Confira também:
UncompleteRequest(void)

~Vinculação

virtual  ~Binding(
  void
)

O destrutor para objetos Binding.

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