nl::Weave::Perfis::DataManagement_Current::AssinaturaCliente

Resumo

Tipos públicos

@130 tipo enumerado
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Callback para transmitir os eventos de assinatura ao aplicativo.
EventID{
  kEvent_OnSubscriptionTerminated = 1,
  kEvent_OnExchangeStart = 2,
  kEvent_OnSubscribeRequestPrepareNeeded = 3,
  kEvent_OnSubscriptionEstablished = 4,
  kEvent_OnNotificationRequest = 5,
  kEvent_OnNotificationProcessed = 6,
  kEvent_OnEventStreamReceived = 7,
  kEvent_OnSubscriptionActivity = 8,
  kEvent_OnUpdateComplete = 9,
  kEvent_OnNoMorePendingUpdates = 10
}
tipo enumerado
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
Callback para buscar o intervalo de tempo a ser esperado antes da próxima inscrição.

Funções estáticas públicas

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
A implementação da política padrão escolherá um intervalo de tempo aleatório com resolução de milissegundos em uma janela cada vez maior, seguindo uma sequência de fibonacci até WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Funções públicas

AbortSubscription(void)
void
cancelar a assinatura.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Desativar o mecanismo de reativação da assinatura.
DiscardUpdates()
void
Informa ao subscriptionClient que o conjunto de TraitPaths pendente será atualizado e cancelado a solicitação de atualização que está em andamento, se houver.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Ativar assinaturas automáticas.
EndSubscription(void)
Encerrar a assinatura.
FlushUpdate()
Sinaliza que o aplicativo terminou de modificar todos os TraitUpdatableDataSinks.
FlushUpdate(bool aForce)
Free(void)
void
Libere esse objeto AssinaturaClient.
GetBinding(void) const
GetLivenessTimeoutMsec(void) const
uint32_t
GetPeerNodeId(void) const
uint64_t
GetSubscriptionId(uint64_t *const apSubscriptionId)
IndicateActivity(void)
void
InitiateCounterSubscription(const uint32_t aLivenessTimeoutSec)
void
InitiateSubscription(void)
void
Configure o AssinaturaClient como um iniciador, não um contador assinante, e ative a assinatura se não for.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
Esse método precisará ser chamado quando o catálogo TraitDataSink for modificado.
ResetResubscribe(void)
void
Inicie o mecanismo de reativação da assinatura.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Informa ao subscriptionClient para não repetir as solicitações de atualização.
UnlockUpdateMutex(void)
void

Estruturas

nl::Weave::Profiles::DataManagement_Current::AssinaturaClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::AssinaturaClient::ResubscribeParam

Sindicatos

nl::Weave::Profiles::DataManagement_Current::AssinaturaClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::AssinaturaClient::OutEventParam

Tipos públicos

@130

 @130

Callback de evento

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

Callback para transmitir os eventos de assinatura ao aplicativo.

Detalhes
Parâmetros
[in] aAppState
Ponteiro do estado do aplicativo definido durante a inicialização do AssinaturaClient.
[in] aEvent
Indica qual evento está acontecendo
[in] aInParam
Estrutura com mais detalhes sobre o evento
[out] aOutParam
Informações retornadas pelo aplicativo

Código do evento

 EventID
Propriedades
kEvent_OnEventStreamReceived

Gerado quando o SignatureEngine conta um fluxo de eventos na mensagem NotificationRequest.

O app pode chamar EndSignature(), Abortsubscription() ou Free() nesse momento.

kEvent_OnExchangeStart

Gerado depois que a vinculação foi preparada e o ExchangeContext foi configurado, mas antes de qualquer mensagem ser enviada.

Esta é a última chance de um aplicativo ajustar as configurações do ExchangeContext. mEC é válido e pode ser ajustado para configurações de tempo limite. O aplicativo não pode tocar em outros campos no cliente e não pode fechar o ExchangeContext.

kEvent_OnNoMorePendingUpdates

Um evento que indica que todos os caminhos no conjunto de atualizações foram processados pelo par e nenhum outro caminho precisa ser atualizado.

kEvent_OnNotificationProcessed

Gerado quando o SignatureEngine termina de processar uma mensagem NotificationRequest.

O app pode chamar EndSignature(), Abortsubscription() ou Free() nesse momento.

kEvent_OnNotificationRequest

Gerado em um recebimento de uma NotificationRequest.

O app pode chamar EndSignature(), Abortsubscription() ou Free() nesse momento.

kEvent_OnSubscribeRequestPrepareNeeded

É enviado quando o mecanismo está pronto para enviar a SubscriptionRequest.

O aplicativo deve preencher os caminhos em que quer se inscrever.

kEvent_OnSubscriptionActivity

Um evento que indica a atividade de assinatura.

Ela é gerada sempre que o cliente recebe uma indicação sobre a atividade da assinatura. Isso inclui o estabelecimento bem-sucedido da assinatura, a recepção de uma NotificationRequest ou o recebimento de um relatório de status em resposta à mensagem SubscriptionConfirm.

kEvent_OnSubscriptionEstablished

Gerado após o estabelecimento da assinatura.

O app pode chamar EndSignature(), Abortsubscription() ou Free() nesse momento.

kEvent_OnSubscriptionTerminated

Marca o fim desta assinatura.

Os parâmetros enviados para nl::Weave::Profiles::DataManagement_Current::AssinaturaClient::EventCallback indicarão se uma nova tentativa de assinatura será feita automaticamente.

Durante a chamada do manipulador de eventos, o estado do cliente será Terminated. Se nenhuma nova tentativa for feita, o estado do cliente será transferido para Initialized quando o manipulador de eventos retornar. Caso contrário, o estado será transferido para ResubscribeHoldoff e será feita uma tentativa de restabelecer a assinatura após o tempo de suspensão.

O aplicativo pode chamar Abortsubscription() ou Free() nesse estado.

Os parâmetros enviados também incluirão um código de erro indicando o motivo do encerramento da assinatura.

A assinatura pode ter sido encerrada por vários motivos (ausência de WACK ACK, falha na alocação do ExchangeContext, tempo limite de resposta etc.). Alguns códigos de erro possíveis gerados pelo cliente:

Código do erro Significado
WEAVE_ERROR_INVALID_MESSAGE_TYPE Uma mensagem não reconhecida é recebida.
WEAVE_ERROR_REFUND. Uma confirmação não é recebida ou uma verificação de atividade falha.
WEAVE_ERROR_INCORRECT_STATE As mensagens são recebidas em um estado inesperado.
WEAVE_ERROR_STATUS_REPORT_RECEIVED (em inglês) Um relatório de status é recebido.
WEAVE_ERROR_INVALID_TOKEN (em inglês) Os campos de solicitação de inscrição são inválidos.

kEvent_OnUpdateComplete

Um evento que indica a conclusão da atualização.

Os parâmetros de evento indicam se a atualização de um caminho de característica específico foi bem-sucedida ou falhou.

Assinar novamentePolíticaPolicyCallback

void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)

Callback para buscar o intervalo de tempo a ser esperado antes da próxima inscrição.

Nesta função, os aplicativos poderão ser cancelados/sem custo financeiro se tiverem desistido da nova inscrição.

Detalhes
Parâmetros
[in] aAppState
Ponteiro do estado do aplicativo definido durante a inicialização do AssinaturaClient.
[in] aInParam
Estrutura com mais detalhes sobre a nova tentativa
[out] aOutIntervalMsec
Tempo em milissegundos para aguardar antes da próxima tentativa

Funções estáticas públicas

Gerenciador de eventos padrão

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

DefaultResubscribePolicyCallback

void DefaultResubscribePolicyCallback(
  void *const aAppState,
  ResubscribeParam & aInParam,
  uint32_t & aOutIntervalMsec
)

A implementação da política padrão escolherá um intervalo de tempo aleatório com resolução de milissegundos em uma janela cada vez maior, seguindo uma sequência de fibonacci até WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

A média do tempo de espera aleatório após o WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX será de cerca de uma hora. Quando a contagem de tentativas for redefinida para 0, a sequência começará novamente.

Funções públicas

Cancelar assinatura

void AbortSubscription(
  void
)

cancelar a assinatura.

cancelar uma assinatura de cliente.

Parar imediatamente de aceitar todo o tráfego associado à assinatura e liberar todos os recursos de comunicação subjacentes. O objeto AssinaturaClient permanece válido e pode ser usado novamente.

Encerra o final do cliente de uma assinatura, sem notificar o editor da assinatura e sem entregar um evento OnSubscriptionTerminated ao manipulador de eventos do aplicativo. Se houver uma assinatura mútua, a contranotificação também será encerrada.

Ao chamar Abortsubscription(), o objeto SubscriptionClient entra no estado Terminated. Quando o processo de encerramento é concluído, o objeto entra no estado Initialized. As duas transições acontecem de maneira síncrona na chamada para Abortsubscription().

Depois que AbortSignature() retorna, o objeto SubscriptionClient pode ser usado para iniciar outra assinatura ou pode ser liberado chamando o método Free().

Atualizado

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DesativarAssinar novamente

void DisableResubscribe(
  void
)

Desativar o mecanismo de reativação da assinatura.

Isso cancelará caso uma nova inscrição esteja pendente.

Descartar atualizações

void DiscardUpdates()

Informa ao subscriptionClient que o conjunto de TraitPaths pendente será atualizado e cancelado a solicitação de atualização que está em andamento, se houver.

Esse método pode ser invocado de qualquer callback.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Ativar assinaturas automáticas.

Anexe um callback para especificar o próximo horário de falha em caso de falha.

Detalhes
Parâmetros
[in] aCallback
Retorno de chamada opcional para buscar o tempo de espera antes de tentar novamente após uma falha. Se NULL, use uma política padrão.

Términodaassinatura

WEAVE_ERROR EndSubscription(
  void
)

Encerrar a assinatura.

Encerrar uma assinatura do cliente sem complicações.

Quando a opção de tempo de compilação WDM_ENABLE_SUBSCRIPTION_CANCEL estiver ativada, encerre a assinatura enviando uma CancelRequest ao par. Os recursos associados à assinatura são liberados na resposta do peering ou no tempo limite. Quando a opção está desativada, a chamada é equivalente a Abortsubscription().

Encerra normalmente o final do cliente de uma assinatura. Se a compatibilidade com o cancelamento de assinaturas estiver ativada, uma mensagem "CancelCancelRequest" será enviada ao editor da assinatura, e o sistema aguardará uma resposta antes do encerramento. Caso contrário, ela será imediatamente encerrada de maneira semelhante a Abortsubscription(). Se houver uma assinatura mútua, a contranotificação também será encerrada.

Enquanto aguarda uma resposta a uma SubscriptionCancelRequest, o SubscriptionClient entra no estado Canceling.

Quando o processo de encerramento começa, o objeto SubscriptionClient entra no estado Terminated e um evento OnSubscriptionTerminated é entregue ao manipulador de eventos do aplicativo. Se o suporte ao cancelamento não estiver ativado, o manipulador de eventos poderá ser chamado de forma síncrona na chamada para EndSignature().

Depois que o manipulador de eventos do aplicativo retorna, o objeto SubscriptionClient entra no estado Initialized. Nesse momento, o objeto SubscriptionClient pode ser usado para iniciar outra assinatura ou pode ser liberado chamando o método Free().

Atualização

WEAVE_ERROR FlushUpdate()

Sinaliza que o aplicativo terminou de modificar todos os TraitUpdatableDataSinks.

A menos que uma troca de atualização anterior esteja em andamento, o cliente pegará todos os dados marcados como atualizados e os enviará ao participante em uma solicitação de atualização. Esse método pode ser chamado em qualquer linha de execução.

Detalhes
Parâmetros
[in] aForce
Se verdadeiro, fará com que a atualização seja enviada imediatamente, mesmo que uma nova tentativa tenha sido programada no futuro. Por padrão, ele é considerado falso.
Retorna
WEAVE_NO_ERROR em caso de sucesso. Outros códigos WEAVE_ERROR em caso de falha.

Atualização

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Sem custo financeiro

void Free(
  void
)

Libere esse objeto AssinaturaClient.

Libere um objeto SubscriptionClient.

Chama Abortsubscription(), se necessário, e libera a referência neste objeto subscriptionClient. Com o uso correto, isso permite que o objeto seja retornado para o pool de objetos

Libere o objeto SubscriptionClient. Se uma assinatura estiver ativa ou em andamento, ela será encerrada imediatamente de modo semelhante a chamar Abortsubscription(). Se alguma solicitação de atualização estiver em andamento, ela será cancelada de forma semelhante.

O aplicativo é responsável por chamar Free() uma única vez durante o ciclo de vida de um objeto SubscriptionClient. Após a chamada Free(), nenhuma outra referência deve ser feita ao objeto.

GetBinding

Binding * GetBinding(
  void
) const 

GetLivenessTimeoutMsec

uint32_t GetLivenessTimeoutMsec(
  void
) const 

GetPeerNodeId

uint64_t GetPeerNodeId(
  void
) const 

GetId

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

IndicateActivity

void IndicateActivity(
  void
)

InitiateCounterSignature

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

InitiateMembership

void InitiateSubscription(
  void
)

Configure o AssinaturaClient como um iniciador, não um contador assinante, e ative a assinatura se não for.

Cancelando

bool IsCanceling() const 

Estabelecido

bool IsEstablished()

Códigos estabelecidos

bool IsEstablishedIdle()

IsFree

bool IsFree()

Em andamento ou Estabelecido

bool IsInProgressOrEstablished()

IsInResubscribeHoldoff

bool IsInResubscribeHoldoff()

IsRepetirEnabled

bool IsRetryEnabled()

Encerrado

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdateDesativarx

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

Esse método precisará ser chamado quando o catálogo TraitDataSink for modificado.

Redefinir/reativar

void ResetResubscribe(
  void
)

Inicie o mecanismo de reativação da assinatura.

Uma nova tentativa será iniciada imediatamente

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

Atualizado

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

SuspendUpdateRetries

void SuspendUpdateRetries()

Informa ao subscriptionClient para não repetir as solicitações de atualização.

Permite que o aplicativo suspenda atualizações por um período sem descartar todos os metadados. As atualizações e novas tentativas serão retomadas quando o FlushUpdate for chamado. Quando chamada para suspender atualizações durante uma atualização, ela não é cancelada, mas, em caso de falha, não é repetida até que o FlushUpdate seja chamado novamente.

UnlockUpdateDesativarx

void UnlockUpdateMutex(
  void
)