nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Resumo
Tipos públicos |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Callback para transmitir eventos de assinatura para o aplicativo. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
Callback para buscar o intervalo de tempo de espera antes da próxima renovação da 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 horário aleatório com resolução em milissegundos em um intervalo cada vez maior, seguindo uma sequência de fibonacci até WDM_REINSTALL_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
Instrui o SubscriptionClient a esvaziar o conjunto de TraitPaths pendentes a serem atualizados e cancele a solicitação de atualização em andamento, se houver.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Ative as renovações automáticas.
|
EndSubscription(void)
|
Encerre a assinatura.
|
FlushUpdate()
|
Sinaliza que o aplicativo terminou de modificar todos os TraitUpdatableDataColetores.
|
FlushUpdate(bool aForce)
|
|
Free(void)
|
void
Libere esse objeto SubscriptionClient.
|
GetBinding(void) const
|
Binding *
|
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 contador-assinante) e ative a assinatura se ela 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 precisa ser chamado quando o catálogo TraitDataSink é modificado.
|
ResetResubscribe(void)
|
void
Use 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:: |
|
nl:: |
Sindicatos |
|
---|---|
nl:: |
|
nl:: |
Tipos públicos
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Callback para transmitir eventos de assinatura para o aplicativo.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
EventID
EventID
Propriedades | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
Gerado quando o SubscriptionEngine conta um fluxo de eventos na mensagem NotificationRequest. O aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free() neste momento. |
||||||||||||
kEvent_OnExchangeStart
|
Gerada depois que a vinculação é preparada e o ExchangeContext é configurado, mas antes do envio de qualquer mensagem. Esta é a última chance para um aplicativo ajustar as configurações do ExchangeContext. O |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Um evento que indica que todos os caminhos no conjunto de atualização foram processados pelo usuário e que não é mais necessário atualizar nenhum caminho. |
||||||||||||
kEvent_OnNotificationProcessed
|
Gerado quando o SubscriptionEngine termina de processar uma mensagem NotificationRequest. O aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free() neste momento. |
||||||||||||
kEvent_OnNotificationRequest
|
Gerado em um recebimento de uma NotificationRequest. O aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free() neste momento. |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Enviado quando o mecanismo está pronto para enviar o SubscribeRequest. O aplicativo precisa preencher os caminhos em que deseja 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 de uma assinatura bem-sucedida, a recepção de uma NotificationRequest ou o recebimento de um relatório de status em resposta à mensagem SubscribeConfirm. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Geradas após o estabelecimento da assinatura. O aplicativo pode chamar EndSubscription(), AbortSubscription() ou Free() neste momento. |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Marca o fim da assinatura. Os parâmetros enviados para nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback indicam se será feita uma nova assinatura automaticamente. Durante a chamada do manipulador de eventos, o estado do cliente será 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 pode ter sido encerrada por vários motivos (WRM ACK ausente, falha de alocação ExchangeContext, tempo limite de resposta etc.). Alguns códigos de erro possíveis gerados pelo cliente:
|
||||||||||||
kEvent_OnUpdateComplete
|
Um evento que indica a conclusão da atualização. Os parâmetros do evento indicarão se a atualização de um caminho de característica específico foi bem-sucedida ou falhou. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Callback para buscar o intervalo de tempo de espera antes da próxima renovação da assinatura.
Os aplicativos podem ser cancelados/sem custo financeiro nessa função se eles decidirem desistir da nova assinatura.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
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 horário aleatório com resolução em milissegundos em um intervalo cada vez maior, seguindo uma sequência de fibonacci até WDM_REINSTALL_MAX_FIBONACCI_STEP_INDEX.
A média do tempo de espera aleatório depois do WDM_REINSTALL_MAX_FIBONACCI_STEP_INDEX será de cerca de uma hora. Quando a contagem de novas tentativas for redefinida como 0, a sequência começará do início novamente.
Funções públicas
AbortSubscription
void AbortSubscription( void )
cancelar a assinatura;
cancelar a assinatura de um cliente;
Pare de aceitar imediatamente todo o tráfego associado à assinatura e libere todos os recursos de comunicação subjacentes. O próprio 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 enviar um evento OnSubscriptionTerminated
ao manipulador de eventos do aplicativo. Se houver uma assinatura mútua, ela 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 ocorrem de forma síncrona na chamada para AbortSubscription().
Depois que AbortSubscription() retornar, o objeto SubscriptionClient
poderá ser usado para iniciar outra assinatura ou poderá ser liberado chamando 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 inscrição estiver pendente.
DiscardUpdates
void DiscardUpdates()
Instrui o SubscriptionClient a esvaziar o conjunto de TraitPaths pendentes a serem atualizados e cancele a solicitação de atualização em andamento, se houver.
Esse método pode ser invocado de qualquer callback.
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Ative as renovações automáticas.
Anexe um callback para especificar o tempo da próxima tentativa em caso de falha.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Encerre a assinatura.
Encerre uma assinatura do cliente sem dificuldades.
Quando a opção de tempo de compilação WDM_ENABLE_SUBSCRIPTION_CANCEL estiver ativada, encerre a assinatura normalmente enviando uma CancelRequest para o peering. 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 o final de uma assinatura do cliente. Se o suporte ao cancelamento da assinatura estiver ativado, uma mensagem SubscribeCancelRequest será enviada ao editor da assinatura e o sistema aguardará uma resposta antes de encerrá-la. Caso contrário, a assinatura será encerrada imediatamente de maneira semelhante a AbortSubscription(). Se houver uma assinatura mútua, a assinatura de contagem também será encerrada.
Enquanto aguarda uma resposta a um SubscribeCancelRequest, o SubscriptionClient
entra no estado Canceling
.
Assim que 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 para cancelamento não estiver ativado, o manipulador de eventos poderá ser chamado de forma síncrona na chamada para EndSubscription().
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().
FlushUpdate
WEAVE_ERROR FlushUpdate()
Sinaliza que o aplicativo terminou de modificar todos os TraitUpdatableDataColetores.
A menos que uma troca de atualização anterior esteja em andamento, o cliente vai pegar todos os dados marcados como atualizados e enviá-los ao participante em uma solicitação de atualização. Esse método pode ser chamado de qualquer linha de execução.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
WEAVE_NO_ERROR em caso de sucesso. Outros códigos WEAVE_ERROR em caso de falha.
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
Sem custo financeiro
void Free( void )
Libere esse objeto SubscriptionClient.
Libere um objeto SubscriptionClient
.
Chama AbortSubscription(), se necessário, e libera a referência nesse objeto SubscriptionClient. Com o uso correto, isso vai permitir 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 contador-assinante) e ative a assinatura se ela não for.
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()
Esse método precisa ser chamado quando o catálogo TraitDataSink é modificado.
ResetResubscribe
void ResetResubscribe( void )
Use 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 app suspenda as atualizações por um período sem descartar todos os metadados. As atualizações e novas tentativas serão retomadas quando FlushUpdate for chamado. Quando chamada para suspender atualizações enquanto uma atualização está em andamento, ela não é cancelada. Em caso de falha, ela não será repetida até que o FlushUpdate seja chamado novamente.
UnlockUpdateMutex
void UnlockUpdateMutex( void )