nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine

Essa é uma classe abstrata.

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

A classe de mecanismo do protocolo WDM.

Resumo

Uma entidade de gerenciamento de dados, cliente ou editor, tem um componente de mecanismo de protocolo e um de gerenciador de dados. Esta classe abstrata representa os recursos comuns do mecanismo de protocolo.

Herança

Subclasses conhecidas diretas:
  nl::Weave::Profiles::DataManagement_Legacy::DMClient
  nl::Weave::Profiles::DataManagement_Legacy::DMPublisher

Construtores e destruidores

ProtocolEngine(void)
~ProtocolEngine(void)

Atributos protegidos

mBindingTable[kBindingTableSize]
O ProtocolEngine tem uma tabela de vinculação que, se o mecanismo for responsável por qualquer coisa além do simples recebimento de notificações de transmissão, provavelmente precisará conter pelo menos uma entrada.
mExchangeMgr
mResponseTimeout
uint32_t
mTransactionTable[kTransactionTableSize]

Funções públicas

BindConfirm(Binding *aBinding)
virtual WEAVE_ERROR
Processar a confirmação de que uma solicitação de vinculação foi concluída com sucesso.
BindConfirm(Binding *aBinding, StatusReport & aReport)
virtual WEAVE_ERROR
Processar a confirmação de que uma solicitação de vinculação falhou.
BindRequest(const uint64_t & aPeerNodeId, uint8_t aTransport)
Solicite uma vinculação usando um ID de nó de peering conhecido e um especificador de transporte.
BindRequest(const uint64_t & aPeerNodeId)
Vincule a um peering conhecido usando o transporte padrão.
BindRequest(nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
BindRequest(WeaveConnection *aConnection)
Solicite uma vinculação usando uma conexão ativa do Weave.
IncompleteIndication(Binding *aBinding, StatusReport & aReport)
virtual void
Processar uma indicação de que uma vinculação falhou.
IncompleteIndication(const uint64_t & aPeerNodeId, StatusReport & aReport)=0
virtual void
Processar uma indicação de que uma vinculação se tornou incompleta.
Init(WeaveExchangeManager *aExchangeMgr)
virtual WEAVE_ERROR
Init(WeaveExchangeManager *aExchangeMgr, uint32_t aResponseTimeout)
virtual WEAVE_ERROR
UnbindRequest(const uint64_t & aPeerNodeId)
void
Solicita que uma vinculação seja desfeita e removida da tabela de vinculação.
UnbindRequest(const uint64_t & aPeerNodeId, WEAVE_ERROR aErr)
void
Solicita que uma vinculação seja desfeita e removida da tabela de vinculação.

Funções protegidas

Clear(void)
void
ClearBindingTable(void)
void
ClearTransactionTable(void)
void
DequeueTransaction(DMTransaction *aTransaction)
void
EnqueueTransaction(DMTransaction *aTransaction, Binding *aBinding)
EnqueueTransaction(DMTransaction *aTransaction)
FailTransactions(Binding *aBinding, StatusReport & aReport)
bool
Finalize(void)
virtual void
FinalizeBindingTable(void)
void
FinalizeTransactionTable(void)
void
FinalizeTransactions(Binding *aBinding)
void
FromExchangeCtx(ExchangeContext *aExchangeCtx)
GetBinding(const uint64_t & aPeerNodeId)
NewBinding(void)
StartTransaction(DMTransaction *aTransaction, Binding *aBinding)
StartTransaction(DMTransaction *aTransaction)
StatusResponse(ExchangeContext *aExchangeCtx, StatusReport & aStatus)

Classes

nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine::DMTransaction

Atributos protegidos

mBindingTable

Binding mBindingTable[kBindingTableSize]

O ProtocolEngine tem uma tabela de vinculação que, se o mecanismo for responsável por qualquer coisa além do simples recebimento de notificações de transmissão, provavelmente precisará conter pelo menos uma entrada.

As vinculações geralmente são indexadas pelo ID do nó. Isso significa que cada mecanismo só pode ter uma vinculação única com um determinado endpoint de serviço.

A especificação WDM tem essa noção de "vinculação padrão" que é o lugar onde as mensagens serão direcionadas se nenhum destino explícito for fornecido. Ela será usada principalmente em dispositivos muito simples, com uma única vinculação ou um pequeno número de vinculações. Para outros fins, apenas a primeira vinculação será formada.

mExchangeMgr

WeaveExchangeManager * mExchangeMgr

mResponseTimeout

uint32_t mResponseTimeout

mTransactionTable

TransactionTableEntry mTransactionTable[kTransactionTableSize]

Funções públicas

BindConfirm

virtual WEAVE_ERROR BindConfirm(
  Binding *aBinding
)

Processar a confirmação de que uma solicitação de vinculação foi concluída com sucesso.

Depois que uma vinculação é concluída, o mecanismo de protocolo analisa a tabela de transações e inicia todas as transações dependentes dessa vinculação.

Detalhes
Parâmetros
[in] aBinding
Um ponteiro para a vinculação concluída.
Retornos
WEAVE_NO_ERROR Se tiver êxito. Caso contrário, retorna um WEAVE_ERROR que reflete uma incapacidade de iniciar uma transação.

BindConfirm

virtual WEAVE_ERROR BindConfirm(
  Binding *aBinding,
  StatusReport & aReport
)

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

Quando uma solicitação de vinculação falha, o mecanismo de protocolo precisa passar pela tabela de transações e falhar em todas as transações que dependem da vinculação.

Detalhes
Parâmetros
[in] aBinding
Um ponteiro para a vinculação com falha.
[in] aReport
Uma referência a um objeto StatusReport detalhando o motivo da falha.
Retornos

BindRequest

WEAVE_ERROR BindRequest(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Solicite uma vinculação usando um ID de nó de peering conhecido e um especificador de transporte.

Com um ID de nó de peering e uma especificação de transporte, essa solicitação configura uma vinculação com esse peering. O lance exigirá uma conclusão adicional SOMENTE se o transporte for TCP. Se já houver uma vinculação ao peer, ela será reutilizada.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao ID do nó de 64 bits da entidade de peering que é o destino da vinculação.
[in] aTransport
O transporte a ser usado.
Retornos
WEAVE_NO_ERROR em caso de sucesso ou WEAVE_ERROR_NO_MEMORY se a tabela de vinculação estiver cheia. Caso contrário, retorna um WEAVE_ERROR que reflete uma falha ao inicializar a vinculação.
Confira também:
WeaveTransportOption

BindRequest

WEAVE_ERROR BindRequest(
  const uint64_t & aPeerNodeId
)

Vincule a um peering conhecido usando o transporte padrão.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao ID do nó de 64 bits da entidade de peering que é o destino da vinculação.
Retornos
WEAVE_NO_ERROR Se tiver êxito. Caso contrário, retorne um WEAVE_ERROR que reflita a falha da operação de vinculação.

BindRequest

WEAVE_ERROR BindRequest(
  nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

BindRequest

WEAVE_ERROR BindRequest(
  WeaveConnection *aConnection
)

Solicite uma vinculação usando uma conexão ativa do Weave.

Uma vinculação também pode ser estabelecida usando uma conexão existente e aberta. Observe que as vinculações estabelecidas dessa maneira não exigem conclusão adicional.

Detalhes
Parâmetros
[in] aConnection
Um ponteiro para uma conexão do Weave a ser usado pela vinculação.
Retornos
WEAVE_NO_ERROR em caso de sucesso ou WEAVE_ERROR_NO_MEMORY se a tabela de vinculação estiver cheia. Caso contrário, retorne um erro que reflita uma falha ao iniciar a vinculação.

IncompleteIndication

virtual void IncompleteIndication(
  Binding *aBinding,
  StatusReport & aReport
)

Processar uma indicação de que uma vinculação falhou.

Quando uma vinculação fica incompleta, ou seja, quando a conexão é encerrada para uma vinculação TCP, o mecanismo de protocolo precisa falhar em todas as transações que dependem dela, o que inclui chamar os gerenciadores de status. Além disso, a indicação incompleta é transmitida para qualquer objeto de superclasse que implementa a forma alternativa desse método que usa um ID de peering.

Detalhes
Parâmetros
[in] aBinding
Um ponteiro para a vinculação com falha.
[in] aReport
Uma referência a um objeto StatusReport detalhando o motivo da falha.

IncompleteIndication

virtual void IncompleteIndication(
  const uint64_t & aPeerNodeId,
  StatusReport & aReport
)=0

Processar uma indicação de que uma vinculação se tornou incompleta.

Camadas superiores que querem ser informadas sobre a falha de vinculação devem usar esse método, que simplesmente passa o ID do terminal junto com um relatório de status. Na verdade, como esse método é um vazio virtual, qualquer subclasse DMClient ou DMPublisher deve fornecer uma implementação.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao ID de 64 bits do nó de peering ou do endpoint de serviço que é o destino da vinculação com falha.
[in] aReport
Uma referência a um objeto StatusReport detalhando o motivo da falha.

Init

virtual WEAVE_ERROR Init(
  WeaveExchangeManager *aExchangeMgr
)

Init

virtual WEAVE_ERROR Init(
  WeaveExchangeManager *aExchangeMgr,
  uint32_t aResponseTimeout
)

ProtocolEngine

 ProtocolEngine(
  void
)

UnbindRequest

void UnbindRequest(
  const uint64_t & aPeerNodeId
)

Solicita que uma vinculação seja desfeita e removida da tabela de vinculação.

Quando uma vinculação é "desvinculada" todas as transações que dependem dele também devem ser removidas. Esse método finaliza automaticamente todas as transações com essa vinculação.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao ID do nó de 64 bits ou ao endpoint do serviço que identifica a vinculação.
Consulte também:
UnbindRequest(const uint64_t, WEAVE_ERROR)

UnbindRequest

void UnbindRequest(
  const uint64_t & aPeerNodeId,
  WEAVE_ERROR aErr
)

Solicita que uma vinculação seja desfeita e removida da tabela de vinculação.

Quando uma vinculação é "desvinculada" todas as transações que dependem dele também devem ser removidas. Esse método finaliza automaticamente todas as transações com essa vinculação.

Detalhes
Parâmetros
[in] aPeerNodeId
Uma referência ao ID do nó de 64 bits ou ao endpoint do serviço que identifica a vinculação.
[in] aErr
WEAVE_NO_ERROR se não houver um motivo específico para essa solicitação de desvinculação. Caso contrário, a causa do erro será transmitida.
Consulte também:
UnbindRequest(const uint64_t)

~ProtocolEngine

virtual  ~ProtocolEngine(
  void
)

Funções protegidas

Limpar

void Clear(
  void
)

ClearBindingTable

void ClearBindingTable(
  void
)

ClearTransactionTable

void ClearTransactionTable(
  void
)

DequeueTransaction

void DequeueTransaction(
  DMTransaction *aTransaction
)

EnqueueTransaction

WEAVE_ERROR EnqueueTransaction(
  DMTransaction *aTransaction,
  Binding *aBinding
)

EnqueueTransaction

WEAVE_ERROR EnqueueTransaction(
  DMTransaction *aTransaction
)

FailTransactions

bool FailTransactions(
  Binding *aBinding,
  StatusReport & aReport
)

Finalizar

virtual void Finalize(
  void
)

FinalizeBindingTable

void FinalizeBindingTable(
  void
)

FinalizeTransactionTable

void FinalizeTransactionTable(
  void
)

FinalizeTransactions

void FinalizeTransactions(
  Binding *aBinding
)

FromExchangeCtx

Binding * FromExchangeCtx(
  ExchangeContext *aExchangeCtx
)

GetBinding

Binding * GetBinding(
  const uint64_t & aPeerNodeId
)

NewBinding

Binding * NewBinding(
  void
)

StartTransaction

WEAVE_ERROR StartTransaction(
  DMTransaction *aTransaction,
  Binding *aBinding
)

StartTransaction

WEAVE_ERROR StartTransaction(
  DMTransaction *aTransaction
)

StatusResponse

WEAVE_ERROR StatusResponse(
  ExchangeContext *aExchangeCtx,
  StatusReport & aStatus
)