nl::Weave::Profiles::DataManagement_Current::SubscriptionClient

Resumo

Tipos públicos

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Callback para transmitir 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
}
enum
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
Callback para buscar o intervalo de tempo de espera antes da próxima nova assinatura.

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 em milissegundos em uma janela cada vez maior, seguindo uma sequência de fibonacci até WDM_REMEMBER_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 renovação da assinatura.
DiscardUpdates()
void
Diz ao SubscriptionClient para esvaziar o conjunto de TraitPaths pendentes a serem atualizados e abortar a solicitação de atualização em andamento, se houver.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Ative as renovações automáticas de assinaturas.
EndSubscription(void)
Encerre a assinatura.
FlushUpdate()
Sinaliza que o aplicativo terminou de modificar todos os TraitUpdatableDataSinks.
FlushUpdate(bool aForce)
Free(void)
void
Libera este objeto SubscriptionClient.
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 SubscriptionClient como um iniciador (em vez de um contrainscrito) e, se não for, ative a assinatura.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
Chame esse método quando o catálogo TraitDataSink for modificado.
ResetResubscribe(void)
void
Abandonar o mecanismo de renovação de assinatura.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Instrui o SubscriptionClient a parar de repetir solicitações de atualização.
UnlockUpdateMutex(void)
void

Estruturas

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

União

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::OutEventParam

Tipos públicos

a 130

 @130

EventCallback

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

Callback para transmitir eventos de assinatura ao aplicativo.

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

EventID

 EventID
Propriedades
kEvent_OnEventStreamReceived

Gerado quando o SubscriptionEngine conta com um fluxo de eventos dentro da mensagem NotificationRequest.

Neste ponto, o aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free().

kEvent_OnExchangeStart

Gerado após a preparação da vinculação e a configuração do ExchangeContext, mas antes do envio de qualquer mensagem.

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

kEvent_OnNoMorePendingUpdates

Um evento que indica que todos os caminhos no conjunto de atualização foram processados pelo peering e não é necessário atualizar mais caminhos.

kEvent_OnNotificationProcessed

Gerado quando o SubscriptionEngine termina de processar uma mensagem NotificationRequest.

Neste ponto, o aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free().

kEvent_OnNotificationRequest

Gerado em um recebimento de uma NotificationRequest.

Neste ponto, o aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free().

kEvent_OnSubscribeRequestPrepareNeeded

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

Espera-se que o aplicativo preencha os caminhos em que quer se inscrever.

kEvent_OnSubscriptionActivity

Um evento que indica a atividade da assinatura.

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

kEvent_OnSubscriptionEstablished

Gerado após o estabelecimento bem-sucedido da assinatura.

Neste ponto, o aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free().

kEvent_OnSubscriptionTerminated

Marca o fim da assinatura.

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

Durante a chamada do manipulador de eventos, o estado do cliente será Terminated. Se não houver nova tentativa, o estado do cliente fará a transição para Initialized quando o manipulador de eventos retornar. Caso contrário, o estado vai mudar para ResubscribeHoldoff e será feita uma tentativa de restabelecer a assinatura após o período de espera.

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

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

A assinatura poderia ter sido encerrada por vários motivos (WRM ACK ausente, 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 foi recebida.
WEAVE_ERROR_TIMEOUT Uma confirmação não é recebida ou a verificação de atividade falha.
WEAVE_ERROR_INCORRECT_STATE As mensagens são recebidas em um estado inesperado.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Um relatório de status é recebido.
WEAVE_ERROR_INVALID_ARGUMENT 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 não.

ResubscribePolicyCallback

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

Callback para buscar o intervalo de tempo de espera antes da próxima nova assinatura.

Os aplicativos podem ser cancelados/sem custo financeiro nesta função se tiverem decidido desistir da nova assinatura.

Detalhes
Parâmetros
[in] aAppState
Ponteiro de estado do app definido durante a inicialização do SubscriptionClient.
[in] aInParam
Struct com mais detalhes sobre a nova tentativa
[out] aOutIntervalMsec
Tempo de espera, em milissegundos, antes da próxima tentativa

Funções estáticas públicas

DefaultEventHandler

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 em milissegundos em uma janela cada vez maior, seguindo uma sequência de fibonacci até WDM_REMEMBER_MAX_FIBONACCI_STEP_INDEX.

A média do tempo de espera aleatório após WDM_REMEMBER_MAX_FIBONACCI_STEP_INDEX será de cerca de uma hora. Quando a contagem de novas tentativas é redefinida para 0, a sequência recomeça do início.

Funções públicas

AbortSubscription

void AbortSubscription(
  void
)

Cancelar a assinatura.

Cancelar a assinatura de um cliente.

Interrompa imediatamente a aceitação de todo o tráfego associado à assinatura e libere todos os recursos de comunicação subjacentes. O objeto SubscriptionClient permanece válido e pode ser usado novamente.

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

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

Depois que AbortSubscription() for retornada, o objeto SubscriptionClient poderá ser usado para iniciar outra assinatura ou ser liberado ao chamar o método Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

Desativar o mecanismo de renovação da assinatura.

Isso será cancelado se uma nova assinatura estiver pendente.

DiscardUpdates

void DiscardUpdates()

Diz ao SubscriptionClient para esvaziar o conjunto de TraitPaths pendentes a serem atualizados e abortar a solicitação de atualização em andamento, se houver.

Esse método pode ser invocado a partir de qualquer callback.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Ative as renovações automáticas de assinaturas.

Anexe um callback para especificar o próximo tempo de nova tentativa em caso de falha.

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

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Encerre a assinatura.

Encerre uma assinatura de cliente de maneira prática.

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

Encerra gentilmente o final do cliente de uma assinatura. Se o suporte ao cancelamento da assinatura estiver ativado, uma mensagem AssineCancelRequest será enviada ao editor da assinatura e o sistema aguardará uma resposta antes de encerrar a assinatura. Caso contrário, a assinatura será imediatamente encerrada de maneira semelhante a AbortSubscription(). Se houver uma assinatura mútua, a inscrição da contração também será encerrada.

Enquanto aguarda uma resposta para um 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 dentro da chamada para EndSubscription().

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

FlushUpdate

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 receberá todos os dados marcados como atualizados e os enviará ao participante em uma solicitação de atualização. É possível chamar esse método em qualquer linha de execução.

Detalhes
Parâmetros
[in] aForce
Se verdadeiro, faz com que a atualização seja enviada imediatamente, mesmo que uma nova tentativa tenha sido programada no futuro. Esse parâmetro é considerado falso por padrão.
Retornos
WEAVE_NO_ERROR em caso de sucesso. outros códigos WEAVE_ERROR em caso de falha.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Gratuito

void Free(
  void
)

Libera este objeto SubscriptionClient.

Libere um objeto SubscriptionClient.

Chama AbortSubscription(), se necessário, e libera a referência nesse objeto SubscriptionClient. Quando usada corretamente, isso permite que o objeto seja retornado ao pool de objetos

Libera o objeto SubscriptionClient. Se uma assinatura estiver ativa ou em andamento, ela será encerrada imediatamente de maneira semelhante à chamada de AbortSubscription(). Se alguma solicitação de atualização estiver em andamento, ela será cancelada de maneira semelhante.

O aplicativo é responsável por chamar Free() exatamente uma vez durante o ciclo de vida de um objeto SubscriptionClient. Depois que Free() for chamado, nenhuma outra referência deverá ser feita ao objeto.

GetBinding

Binding * GetBinding(
  void
) const 

GetLivenessTimeoutMsec

uint32_t GetLivenessTimeoutMsec(
  void
) const 

GetPeerNodeId

uint64_t GetPeerNodeId(
  void
) const 

GetSubscriptionId

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

IndicateActivity

void IndicateActivity(
  void
)

InitiateCounterSubscription

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

InitiateSubscription

void InitiateSubscription(
  void
)

Configure o SubscriptionClient como um iniciador (em vez de um contrainscrito) e, se não for, ative a assinatura.

IsCanceling

bool IsCanceling() const 

IsEstablished

bool IsEstablished()

IsEstablishedIdle

bool IsEstablishedIdle()

IsFree

bool IsFree()

IsInProgressOrEstablished

bool IsInProgressOrEstablished()

IsInResubscribeHoldoff

bool IsInResubscribeHoldoff()

IsRetryEnabled

bool IsRetryEnabled()

IsTerminated

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdateMutex

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

Chame esse método quando o catálogo TraitDataSink for modificado.

ResetResubscribe

void ResetResubscribe(
  void
)

Abandonar o mecanismo de renovação de assinatura.

Isso vai iniciar uma nova tentativa imediata

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

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

SuspendUpdateRetries

void SuspendUpdateRetries()

Instrui o SubscriptionClient a parar de repetir solicitações de atualização.

Permite que o aplicativo suspenda as atualizações por um período de tempo sem descartar todos os metadados. As atualizações e novas tentativas serão retomadas quando o FlushUpdate for chamado. Quando chamado para suspender atualizações enquanto uma atualização está em andamento, ela não é cancelada. No entanto, em caso de falha, não haverá uma nova tentativa até que o FlushUpdate seja chamado novamente.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)