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

Riepilogo

Tipi pubblici

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Callback per passare eventi di abbonamento all'applicazione.
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(*
Richiama per recuperare il tempo di attesa prima del successivo rinnovo dell'abbonamento.

Funzioni statiche pubbliche

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
L'implementazione del criterio predefinito sceglierà una fascia oraria casuale con risoluzione in millisecondi su una finestra in continuo aumento, seguendo una sequenza di Fibonacci fino a WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Funzioni pubbliche

AbortSubscription(void)
void
Interrompi l'abbonamento.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Disabilita il meccanismo di riabbonamento.
DiscardUpdates()
void
Comunica a SubscriptionClient di svuotare l'insieme di TraitPath in attesa di aggiornamento e di interrompere l'eventuale richiesta di aggiornamento in corso.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Attiva gli abbonamenti automatici.
EndSubscription(void)
Terminare l'abbonamento.
FlushUpdate()
Indica che l'applicazione ha terminato la modifica di tutti i TraitUpdatableDataSinks.
FlushUpdate(bool aForce)
Free(void)
void
Libera questo oggetto 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
Configura SubscriptionClient come iniziatore (anziché un controabbonato) e attiva l'abbonamento in caso contrario.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
Questo metodo deve essere chiamato quando il catalogo TraitDataSink è stato modificato.
ResetResubscribe(void)
void
Limitare il meccanismo di riabbonamento.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Comunica a SubscriptionClient di non riprovare a eseguire le richieste di aggiornamento.
UnlockUpdateMutex(void)
void

Strutture

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

Unione

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

Tipi pubblici

@130

 @130

EventCallback

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

Callback per passare eventi di abbonamento all'applicazione.

Dettagli
Parametri
[in] aAppState
Puntatore di stato dell'app impostato durante l'inizializzazione di SubscriptionClient.
[in] aEvent
Indica quale evento è in corso
[in] aInParam
Spiega con ulteriori dettagli sull'evento
[out] aOutParam
Informazioni restituite dall'applicazione

EventID

 EventID
Proprietà
kEvent_OnEventStreamReceived

Vengono generati quando SubscriptionEngine conteggia uno stream di eventi all'interno del messaggio NotificationRequest.

A questo punto, l'applicazione potrebbe chiamare EndSubscription(), AbortSubscription() o Free().

kEvent_OnExchangeStart

Vengono generati dopo la preparazione dell'associazione e la configurazione di ExchangeContext, ma prima dell'invio di qualsiasi messaggio.

Questa è l'ultima possibilità che un'applicazione modifichi le impostazioni di ExchangeContext. mEC è valido e può essere ottimizzato per le impostazioni di timeout. L'applicazione non deve toccare altri campi del client e non deve chiudere ExchangeContext.

kEvent_OnNoMorePendingUpdates

Un evento che indica che tutti i percorsi nel set di aggiornamento sono stati elaborati dal peer e che non è necessario aggiornare altri percorsi.

kEvent_OnNotificationProcessed

Vengono generati quando SubscriptionEngine termina l'elaborazione di un messaggio NotificationRequest.

A questo punto, l'applicazione potrebbe chiamare EndSubscription(), AbortSubscription() o Free().

kEvent_OnNotificationRequest

Generati su un ricevimento di una NotificationRequest.

A questo punto, l'applicazione potrebbe chiamare EndSubscription(), AbortSubscription() o Free().

kEvent_OnSubscribeRequestPrepareNeeded

Inviato quando il motore è pronto a inviare la richiesta di iscrizione.

L'applicazione dovrebbe compilare i percorsi a cui vuole iscriversi.

kEvent_OnSubscriptionActivity

Un evento che indica le attività di abbonamento.

Viene generato ogni volta che il cliente riceve un'indicazione sull'attività di abbonamento, tra cui la corretta sottoscrizione dell'abbonamento, la ricezione di una NotificationRequest o una ricezione di un report di stato in risposta al messaggio SubscribeConfirm.

kEvent_OnSubscriptionEstablished

Vengono generate dopo la sottoscrizione dell'abbonamento.

A questo punto, l'applicazione potrebbe chiamare EndSubscription(), AbortSubscription() o Free().

kEvent_OnSubscriptionTerminated

Segna la fine di questo abbonamento.

I parametri inviati a nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback indicheranno se verrà effettuato automaticamente un nuovo tentativo di sottoscrizione.

Durante la chiamata al gestore di eventi, lo stato del client sarà Terminated. Se non verranno effettuati tentativi, lo stato del client passerà a Initialized quando verrà restituito il gestore di eventi. In caso contrario, lo stato passerà a ResubscribeHoldoff e verrà fatto un tentativo per ristabilire l'abbonamento una volta trascorso l'intervallo di tempo.

In questo stato, l'applicazione potrebbe chiamare AbortSubscription() o Free().

I parametri inviati includeranno anche un codice di errore che indica il motivo della fine dell'abbonamento.

La sottoscrizione potrebbe essere stata terminata per diversi motivi (WRM ACK mancante, errore di allocazione ExchangeContext, timeout della risposta e così via) Alcuni possibili codici di errore generati dal client:

Codice di errore Significato
WEAVE_ERROR_INVALID_MESSAGE_TYPE È stato ricevuto un messaggio non riconosciuto.
WEAVE_ERROR_TIMEOUT Non viene ricevuto un ACK o un controllo di attività ha esito negativo.
WEAVE_ERROR_INCORRECT_STATE I messaggi vengono ricevuti in uno stato imprevisto.
WEAVE_ERROR_STATUS_REPORT_RECEIVED È stato ricevuto un report di stato.
WEAVE_ERROR_INVALID_ARGUMENT I campi della richiesta di iscrizione non sono validi.

kEvent_OnUpdateComplete

Un evento che indica il completamento dell'aggiornamento.

I parametri evento indicheranno se l'aggiornamento di un percorso di trait specifico è riuscito o meno.

ResubscribePolicyCallback

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

Richiama per recuperare il tempo di attesa prima del successivo rinnovo dell'abbonamento.

Questa funzione può interrompere o interrompere l'utilizzo delle applicazioni se decidono di rinunciare alla nuova iscrizione.

Dettagli
Parametri
[in] aAppState
Puntatore di stato dell'app impostato durante l'inizializzazione di SubscriptionClient.
[in] aInParam
Spiega con dettagli aggiuntivi sul nuovo tentativo
[out] aOutIntervalMsec
Tempo di attesa in millisecondi prima del prossimo nuovo tentativo

Funzioni statiche pubbliche

DefaultEventHandler

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

DefaultResubscribePolicyCallback

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

L'implementazione del criterio predefinito sceglierà una fascia oraria casuale con risoluzione in millisecondi su una finestra in continuo aumento, seguendo una sequenza di Fibonacci fino a WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

La media del tempo di attesa randomizzato dopo il WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX sarà di circa un'ora. Quando il conteggio dei nuovi tentativi viene reimpostato su 0, la sequenza ricomincia dall'inizio.

Funzioni pubbliche

AbortSubscription

void AbortSubscription(
  void
)

Interrompi l'abbonamento.

Interrompi l'abbonamento a un client.

Interrompi immediatamente l'accettazione di tutto il traffico associato alla sottoscrizione e rilascia tutte le risorse di comunicazione sottostanti. L'oggetto SubscriptionClient rimane valido e può essere utilizzato di nuovo.

Termina la fine del client di un abbonamento, senza informare l'editore dell'abbonamento e senza consegnare un evento OnSubscriptionTerminated al gestore di eventi dell'applicazione. Se esiste una sottoscrizione reciproca, viene terminato anche il contatore di sottoscrizione.

Dopo aver chiamato AbortSubscription(), l'oggetto SubscriptionClient entra nello stato Terminated. Una volta completato il processo di terminazione, l'oggetto entra nello stato Initialized. Entrambe le transizioni avvengono in modo sincrono all'interno della chiamata ad AbortSubscription().

Dopo la restituzione di AbortSubscription(), l'oggetto SubscriptionClient può essere utilizzato per avviare un altro abbonamento o può essere liberato chiamando il metodo Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

Disabilita il meccanismo di riabbonamento.

L'azione verrà interrotta se era in attesa di un nuovo abbonamento.

DiscardUpdates

void DiscardUpdates()

Comunica a SubscriptionClient di svuotare l'insieme di TraitPath in attesa di aggiornamento e di interrompere l'eventuale richiesta di aggiornamento in corso.

Questo metodo può essere richiamato da qualsiasi callback.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Attiva gli abbonamenti automatici.

Allega un callback per specificare l'orario successivo per il nuovo tentativo in caso di errore.

Dettagli
Parametri
[in] aCallback
Callback facoltativo per recuperare il tempo di attesa prima di riprovare in caso di errore. Se NULL utilizza un criterio predefinito.

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Terminare l'abbonamento.

Termina automaticamente un abbonamento client.

Quando l'opzione di compilazione WDM_ENABLE_SUBSCRIPTION_CANCEL è abilitata, termina automaticamente l'abbonamento inviando un'opzione CancelRequest al peer. Le risorse associate all'abbonamento vengono svincolate in risposta al peer o in caso di timeout. Quando l'opzione è disattivata, la chiamata equivale ad AbortSubscription().

Termina automaticamente la parte client di un abbonamento. Se il supporto per l'annullamento dell'abbonamento è attivato, all'editore dell'abbonamento viene inviato un messaggio SubscribeCancelRequest e il sistema attende una risposta prima di terminare l'abbonamento. In caso contrario, l'abbonamento viene terminato immediatamente in modo simile a AbortSubscription(). Se esiste un abbonamento reciprocamente attivo, viene terminato anche il contatore abbonamento.

Durante l'attesa di una risposta a una SubscriptionCancelRequest, il SubscriptionClient entra nello stato Canceling.

Una volta iniziato il processo di terminazione, l'oggetto SubscriptionClient entra nello stato Terminated e un evento OnSubscriptionTerminated viene consegnato al gestore di eventi dell'applicazione. Tieni presente che se il supporto per l'annullamento non è abilitato, il gestore di eventi potrebbe essere chiamato in modo sincrono all'interno della chiamata EndSubscription().

Quando il gestore di eventi dell'applicazione viene restituito, l'oggetto SubscriptionClient entra nello stato Initialized. A questo punto, l'oggetto SubscriptionClient può essere utilizzato per avviare un altro abbonamento o può essere liberato chiamando il metodo Free().

FlushUpdate

WEAVE_ERROR FlushUpdate()

Indica che l'applicazione ha terminato la modifica di tutti i TraitUpdatableDataSinks.

A meno che non sia in corso uno scambio di aggiornamenti precedente, il client riceverà tutti i dati contrassegnati come aggiornati e li invierà all'intervistato in un'unica richiesta di aggiornamento. Questo metodo può essere chiamato da qualsiasi thread.

Dettagli
Parametri
[in] aForce
Se il valore è true, l'aggiornamento viene inviato immediatamente anche se è stato programmato un nuovo tentativo in futuro. Questo parametro è considerato falso per impostazione predefinita.
Restituisce
WEAVE_NO_ERROR in caso di esito positivo; altri codici WEAVE_ERROR in caso di errore.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Senza costi

void Free(
  void
)

Libera questo oggetto SubscriptionClient.

Libera un oggetto SubscriptionClient.

Richiama AbortSubscription() se necessario e rilascia il refcount su questo oggetto SubscriptionClient. In caso di utilizzo corretto, questo dovrebbe consentire la restituzione dell'oggetto al pool di oggetti

Libera l'oggetto SubscriptionClient. Se un abbonamento è attivo o in corso, l'abbonamento viene interrotto immediatamente in modo simile alla chiamata di AbortSubscription(). Eventuali richieste di aggiornamento in corso verranno interrotte in modo analogo.

L'applicazione deve chiamare Free() esattamente una volta durante il ciclo di vita di un oggetto SubscriptionClient. Dopo aver chiamato Free(), non devono essere fatti ulteriori riferimenti all'oggetto.

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
)

Configura SubscriptionClient come iniziatore (anziché un controabbonato) e attiva l'abbonamento in caso contrario.

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()

Questo metodo deve essere chiamato quando il catalogo TraitDataSink è stato modificato.

ResetResubscribe

void ResetResubscribe(
  void
)

Limitare il meccanismo di riabbonamento.

Verrà avviato immediatamente un nuovo tentativo

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

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

SuspendUpdateRetries

void SuspendUpdateRetries()

Comunica a SubscriptionClient di non riprovare a eseguire le richieste di aggiornamento.

Consente all'applicazione di sospendere gli aggiornamenti per un determinato periodo di tempo senza eliminare tutti i metadati. Aggiornamenti e nuovi tentativi verranno ripresi quando viene chiamato FlushUpdate. Quando viene chiamato per sospendere gli aggiornamenti mentre un aggiornamento è in corso, l'aggiornamento non viene annullato ma, in caso di errore, non verrà ritentato fino a quando FlushUpdate non verrà richiamato.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)