O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

nl :: Tecer:: Perfis :: DataManagement_Legacy :: Obrigatório

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

O Binding classe gerencia o estado de comunicação em nome de uma entidade aplicativo usando Weave.

Resumo

Quando um aplicativo deseja usar o Weave para se comunicar com uma entidade remota, existe uma grande variedade de opções. O Binding classe currais estas opções e as organiza de tal forma que o material fácil é fácil e as coisas mais difíceis é, pelo menos tratável. As opções cobertas incluem:

  • comunicação UDP unicast com um nó de mesmo nível conhecido.
  • Transmissão UDP com "qualquer" nó.
  • comunicação unicast WRMP com um nó de mesmo nível conhecido.
  • Comunicações TCP com um nó de mesmo nível conhecido.
  • Comunicações TCP com um terminal de serviço conhecido usando uma instância do gerenciador de serviço para configurar as coisas.
  • Comunicações TCP baseadas em uma conexão pré-estabelecida.

Construtores e Destruidores

Binding (void)
O construtor padrão para encadernação objetos.
~Binding (void)
O destruidor para Binding objetos.

Tipos públicos

@165 {
kState_Incomplete = 0,
kState_Completing = 1,
kState_Complete = 2
}
enum
O conjunto de encadernação estados de objeto.

Atributos públicos

mAuthMode
WeaveAuthMode
O modo de autenticação Weave a ser usado.
mConnection
Um ponteiro para a conexão Weave atualmente em uso nesta ligação.
mEngine
Um apontador para a ProtocolEngine objecto relacionado com esta encadernação .
mPeerNodeId
uint64_t
O ID do nó de 64 bits do destino de ligação.
mServiceMgr
Um ponteiro para o objeto ServiceManager (opcional) a ser usado na conclusão dessa vinculação.
mState
uint8_t
A corrente Binding estado do objeto.
mTransport
uint8_t
O transporte a ser usado na realização deste Binding .

Funções públicas

CompleteConfirm ( WeaveConnection *aConnection)
void
Lidar com 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
Lidar com a confirmação de uma solicitação de vinculação.
CompleteRequest ( ProtocolEngine *aEngine)
Solicite a conclusão de uma ligação.
Connect ( WeaveConnection *aConnection)
Conclua uma ligação TCP fornecendo uma conexão completa.
Finalize (void)
void
"Incomplete" uma ligação e libere-a.
Finalize ( WEAVE_ERROR aErr)
void
"Incomplete" uma ligação e libere-a.
Free (void)
void
Limpe o estado de ligação.
GetExchangeCtx ( WeaveExchangeManager *aExchangeMgr, void *aAppState)
Produzir um ExchangeContext objecto a partir de uma encadernação .
IncompleteIndication ( StatusReport & aReport)
void
Lidar com a falha de uma encadernação.
Init (const uint64_t & aPeerNodeId)
Inicializar uma ligação com apenas um ID de nó.
Init (const uint64_t & aPeerNodeId, uint8_t aTransport)
Inicializar um Binding objeto com base na identificação de pares e transporte.
Init (const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Inicializar um Binding objeto para um ponto de extremidade de serviço.
Init ( WeaveConnection *aConnection)
Inicializar um Binding objecto com um WeaveConnection .
IsComplete (void)
bool
Verifique se a ligação foi concluída.
IsFree (void)
bool
Verifique se uma ligação é gratuita.
UncompleteRequest (void)
void
Faz com que uma ligação esteja incompleta.
UncompleteRequest ( WEAVE_ERROR aErr)
void
Faz com que uma ligação esteja incompleta.

Tipos públicos

@ 165

 @165

O conjunto de encadernação estados de objeto.

Propriedades
kState_Complete

O estado de uma ligação que está completo e pronto para uso.

kState_Completing

O estado de uma ligação que está em vias de ser concluída.

kState_Incomplete

O estado inicial (e final) de uma encadernação .

Atributos públicos

mAuthMode

WeaveAuthMode mAuthMode

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

(SOMENTE LEITURA)

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

mConnection

WeaveConnection * mConnection

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

(SOMENTE LEITURA)

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

mEngine

ProtocolEngine * mEngine

Um apontador para a ProtocolEngine objecto relacionado com esta encadernação .

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

mPeerNodeId

uint64_t mPeerNodeId

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

(SOMENTE LEITURA)

Cada Binding tem uma entidade de destino, que é chamado aqui. Além de um ID de nó Weave, isso pode nomear um ponto de extremidade 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 ponto final de serviço de 64 bits pode ser fornecido no momento da inicialização no lugar de um ID de nó Weave. Nesse caso, um objeto ServiceManager também é necessário para concluir a vinculação. As ligações normais de TCP ou WRMP não requerem um objeto ServiceManager.

mState

uint8_t mState

A corrente Binding estado do objeto.

Apenas uma operação "completa" pode ser executada por vez e, em qualquer caso, se você solicitar a conclusão de uma ligação, basta chamar a função de confirmação imediatamente. A variável de estado abaixo rastreia o estado atual e atua como um bloqueio.

mTransport

uint8_t mTransport

O transporte a ser usado na realização deste Binding .

(SOMENTE LEITURA)

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

Funções públicas

Obrigatório

 Binding(
  void
)

O construtor padrão para encadernação objetos.

Limpa todos os estados internos.

ConcluirConfirmar

void CompleteConfirm(
  WeaveConnection *aConnection
)

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

Detalhes
Parâmetros
[in] aConnection
Um apontador para um activo WeaveConnection para o alvo de ligação.

ConcluirConfirmar

void CompleteConfirm(
  StatusReport & aReport
)

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

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

ConcluirConfirmar

void CompleteConfirm(
  void
)

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

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

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

A conclusão de uma ligação é, pelo menos, para que requerem ligações TCP, realizados no que diz respeito a um determinado ProtocolEngine objeto, que fornece o acesso a uma instância ExchangeManager.

Detalhes
Parâmetros
[in] aEngine
Um apontador para um ProtocolEngine objecto em nome do que a conclusão está a ser executada.
Valores Retornados
WEAVE_NO_ERROR
Com sucesso.
WEAVE_ERROR_INCORRECT_STATE
se a ligação já estiver sendo concluída.
WEAVE_ERROR_NO_MEMORY
Se uma conexão for necessária e nenhuma estiver disponível
Devoluções
Caso contrário, qualquer WEAVE_ERROR retornou ao tentar conectar.

Conectar

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

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

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

Detalhes
Parâmetros
[in] aConnection
Um apontador para um WeaveConnection utilizado para completar a ligação.
Valores Retornados
WEAVE_NO_ERROR
Com sucesso.
WEAVE_ERROR_INCORRECT_STATE
Se a ligação já tiver uma conexão.
WEAVE_ERROR_INVALID_ARGUMENT
Se a conexão for NULL.

Finalizar

void Finalize(
  void
)

"Incomplete" uma ligação e libere-a.

Ligações pode ter estado que requer a limpeza, por exemplo, ligação de fecho, o qual é tratado pelo método uncomplete () além de estado que é simplesmente apagada ao seu estado inicial pelo Livre () método. Esse método, em grande parte por uma questão de conveniência, invoca ambos.

Veja também:
Finalizar (WEAVE_ERROR)

Finalizar

void Finalize(
  WEAVE_ERROR aErr
)

"Incomplete" uma ligação e libere-a.

Ligações pode ter estado que requer a limpeza, por exemplo, ligação de fecho, o qual é tratado pelo método uncomplete () além de estado que é simplesmente apagada ao seu estado inicial pelo Livre () método. Esse método, em grande parte por uma questão de conveniência, invoca ambos.

Detalhes
Parâmetros
[in] aErr
Este código de erro indica a causa desta solicitação. Se não for WEAVE_NO_ERROR, a conexão TCP pode ser abortada.
Veja também:
Finalizar (vazio)

Livre

void Free(
  void
)

Limpe o estado de ligação.

Retorne incondicionalmente todo o estado de vinculação ao seu estado original.

GetExchangeCtx

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

Produzir um ExchangeContext objecto a partir de uma encadernação .

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

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Lidar com a falha de uma encadernação.

Este método é chamado e, por sua vez, invoca manipuladores de camadas mais altas quando a ligação falha após a conclusão, isto é, após CompleteConfirm () foi executado com um sucesso denotando estado.

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

Iniciar

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Inicializar uma ligação com apenas um ID de nó.

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

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao ID de 64 bits do alvo de ligação.
Valores Retornados
WEAVE_NO_ERROR
Com sucesso.
WEAVE_ERROR_INVALID_ARGUMENT
Se a ligação estiver subespecificada.

Iniciar

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Inicializar um Binding objeto com base na identificação de pares e transporte.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao identificador de nó de 64 bits do alvo de ligação.
[in] aTransport
A especificação de transporte, de WeaveTransportOption.
Valores Retornados
WEAVE_NO_ERROR
Com sucesso.
WEAVE_ERROR_INVALID_ARGUMENT
Se a ligação estiver subespecificada.

Iniciar

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

Inicializar um Binding objeto para um ponto de extremidade de serviço.

É assim que você se vincula a um ponto de extremidade específico no serviço Nest. Uma vinculação desse tipo requer um processo de conclusão de vários estágios, que pode incluir preencher ou atualizar o cache de diretório de serviço local. Na maior parte, este processo está 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 de uso (e completa) A ligação.

Detalhes
Parâmetros
[in] aServiceEpt
Uma referência ao identificador de 64 bits para o ponto de extremidade do Weave Service de interesse.
[in] aServiceMgr
Um ponteiro para a instância do gerenciador de serviço a ser usado na pesquisa de uma camada de serviço e conexão com ela.
[in] aAuthMode
O modo de autenticação a ser usado na conexão.
Valores Retornados
WEAVE_NO_ERROR
Com sucesso.
WEAVE_ERROR_INVALID_ARGUMENT
Se a ligação estiver subespecificada.

Iniciar

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Inicializar um Binding objecto com um WeaveConnection .

Detalhes
Parâmetros
[in] aConnection
Um apontador para um WeaveConnection para utilizar como uma base para a ligação ..
Valores Retornados
WEAVE_NO_ERROR
Com sucesso.
WEAVE_ERROR_INVALID_ARGUMENT
Se a ligação estiver subespecificada.

Está completo

bool IsComplete(
  void
)

Verifique se a ligação foi concluída.

Detalhes
Devoluções
verdadeiro se estiver completo, falso caso contrário.
Veja também:
CompleteRequest (ProtocolEngine * aEngine)

É grátis

bool IsFree(
  void
)

Verifique se uma ligação é gratuita.

"Livre" neste contexto significa simplesmente "tem um ID de nó de mesmo nível definido". IsFree () deve ser pensado no sentido de "teve Grátis () chamado sobre ele e não tem sido usado desde".

Detalhes
Devoluções
verdadeiro se a ligação for livre, falso caso contrário.

UncompleteRequest

void UncompleteRequest(
  void
)

Faz com que uma ligação esteja incompleta.

Fundamentalmente, uma ligação deve estar no estado "incompleto" após esse método ter sido chamado, mas, mais sutilmente, qualquer estado relevante não contido na própria ligação, por exemplo, conexão TCP, deve ser limpo também. As candidaturas podem considerar invocando UncompleteRequest () como parte da limpeza em erro.

Veja também:
UncompleteRequest (WEAVE_ERROR)

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Faz com que uma ligação esteja incompleta.

Fundamentalmente, uma ligação deve estar no estado "incompleto" após esse método ter sido chamado, mas, mais sutilmente, qualquer estado relevante não contido na própria ligação, por exemplo, conexão TCP, deve ser limpo também. As candidaturas podem considerar invocando UncompleteRequest () como parte da limpeza em erro.

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

~ Ligação

virtual  ~Binding(
  void
)

O destruidor para Binding objetos.

Limpa todos os estados internos E, se necessário, fecha as conexões abertas.