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 gli 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(*
Callback per recuperare l'intervallo di tempo di attesa prima del successivo riabbonamento.

Funzioni statiche pubbliche

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
L'implementazione dei criteri predefiniti sceglierà una fascia oraria casuale con risoluzione in millisecondi su una finestra in continua crescita, 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
Disattiva il meccanismo di riabbonati.
DiscardUpdates()
void
Comunica a SubscriptionClient di svuotare il set di TraitPath in attesa di aggiornamento e di interrompere la richiesta di aggiornamento in corso, se presente.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Attiva i riabbonati automatici.
EndSubscription(void)
Terminare l'abbonamento.
FlushUpdate()
Indica che l'applicazione ha terminato la modifica di tutti i TraitUpdatableDataSink.
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 (e non un contatore abbonato) 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 dovrebbe essere chiamato dopo che il catalogo TraitDataSink sarà stato modificato.
ResetResubscribe(void)
void
Interrompi il meccanismo di riabbonati.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Comunica a SubscriptionClient di interrompere i nuovi tentativi di richieste di aggiornamento.
UnlockUpdateMutex(void)
void

Structs

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

Sindacati

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 gli eventi di abbonamento all'applicazione.

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

EventID

 EventID
Proprietà
kEvent_OnEventStreamReceived

Generato quando SubscriptionEngine conta un flusso di eventi nel messaggio NotificationRequest.

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

kEvent_OnExchangeStart

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

Questa è l'ultima possibilità per un'applicazione di modificare le impostazioni di ExchangeContext. mEC è valido e può essere ottimizzato per le impostazioni di timeout. L'applicazione non deve toccare altri campi nel 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

Viene generato quando SubscriptionEngine termina l'elaborazione di un messaggio NotificationRequest.

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

kEvent_OnNotificationRequest

Generato sulla ricezione di una NotificationRequest.

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

kEvent_OnSubscribeRequestPrepareNeeded

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

L'applicazione deve compilare i percorsi a cui vuole abbonarsi.

kEvent_OnSubscriptionActivity

Un evento che indica l'attività di abbonamento.

Viene generato ogni volta che il cliente riceve un'indicazione sull'attività di abbonamento; Ciò include la creazione di un abbonamento riuscito, la ricezione di una NotificationRequest o la ricezione di un rapporto di stato in risposta al messaggio SubscribeConfirm.

kEvent_OnSubscriptionEstablished

Generato al momento della corretta creazione dell'abbonamento.

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

kEvent_OnSubscriptionTerminated

Contrassegna la fine di questa sottoscrizione.

I parametri inviati a nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback indicano se verrà eseguito automaticamente un tentativo di riabbonarsi.

Durante la chiamata del gestore di eventi, lo stato del client sarà Terminated. Se non verrà effettuato alcun nuovo tentativo, lo stato del client passerà a Initialized al ritorno del gestore di eventi. In caso contrario, lo stato passerà a ResubscribeHoldoff e verrà effettuato un tentativo di ristabilire l'abbonamento dopo l'orario di attesa.

L'applicazione potrebbe chiamare AbortSubscription() o Free() in questo stato.

I parametri inviati includeranno anche un codice di errore che indica il motivo per cui l'abbonamento è terminato.

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

Codice di errore Significato
WEAVE_ERROR_INVALID_MESSAGE_TYPE Ricevuto messaggio non riconosciuto.
WEAVE_ERROR_TIMEOUT Un messaggio di conferma non viene ricevuto 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 Viene ricevuto un report sullo 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 un tratto specifico è riuscito o meno.

ResubscribePolicyCallback

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

Callback per recuperare l'intervallo di tempo di attesa prima del successivo riabbonamento.

Le applicazioni possono essere interrotte/senza costi in questa funzione se hanno deciso di rinunciare alla nuova iscrizione.

Dettagli
Parametri
[in] aAppState
Puntatore dello stato dell'app impostato durante l'inizializzazione di SubscriptionClient.
[in] aInParam
Inserisci dettagli aggiuntivi sul nuovo tentativo
[out] aOutIntervalMsec
Tempo di attesa in millisecondi prima del prossimo 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 dei criteri predefiniti sceglierà una fascia oraria casuale con risoluzione in millisecondi su una finestra in continua crescita, seguendo una sequenza di Fibonacci fino a WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

La media del tempo di attesa casuale dopo 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.

Interrompere un abbonamento client.

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

Chiude la fine di un abbonamento sul client, senza informare l'editore dell'abbonamento e senza inviare un evento OnSubscriptionTerminated al gestore di eventi dell'applicazione. Se esiste una sottoscrizione reciproca, viene terminata anche la sottoscrizione contatore.

Alla chiamata di 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().

Una volta restituito AbortSubscription(), l'oggetto SubscriptionClient può essere utilizzato per avviare un'altra sottoscrizione oppure può essere liberato chiamando il metodo Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

Disattiva il meccanismo di riabbonati.

Questa operazione verrà interrotta se era in attesa di una nuova sottoscrizione.

DiscardUpdates

void DiscardUpdates()

Comunica a SubscriptionClient di svuotare il set di TraitPath in attesa di aggiornamento e di interrompere la richiesta di aggiornamento in corso, se presente.

Questo metodo può essere richiamato da qualsiasi callback.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Attiva i riabbonati automatici.

Allega un callback per specificare l'ora del successivo nuovo tentativo in caso di errore.

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

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Terminare l'abbonamento.

Terminare correttamente un abbonamento client.

Quando l'opzione di compilazione WDM_ENABLE_SUBSCRIPTION_CANCEL è abilitata, termina l'abbonamento inviando una richiesta CancelRequest al peer. Le risorse associate all'abbonamento vengono svincolate quando risponde il peer o quando scade. Se l'opzione è disattivata, la chiamata equivale ad AbortSubscription().

Chiude delicatamente la fine di un abbonamento del client. Se il supporto per l'annullamento dell'abbonamento è abilitato, viene inviato un messaggio SubscribeCancelRequest all'editore dell'abbonamento e il sistema attende una risposta prima di terminare l'abbonamento. In caso contrario, l'abbonamento viene interrotto immediatamente in modo simile ad AbortSubscription(). Se esiste una sottoscrizione reciproca, viene terminata anche la sottoscrizione contatore.

In attesa di una risposta a una richiesta SubscribeCancelRequest, SubscriptionClient entra nello stato Canceling.

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

Una volta restituito il gestore di eventi dell'applicazione, l'oggetto SubscriptionClient entra nello stato Initialized. A questo punto, l'oggetto SubscriptionClient può essere utilizzato per avviare un'altra sottoscrizione oppure può essere liberato chiamando il metodo Free().

FlushUpdate

WEAVE_ERROR FlushUpdate()

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

A meno che non sia in corso uno scambio di aggiornamenti precedente, il cliente prenderà 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 pianificato 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
)

Gratis

void Free(
  void
)

Libera questo oggetto SubscriptionClient.

Libera un oggetto SubscriptionClient.

Se necessario, chiama AbortSubscription() e rilascia il refcount in questo oggetto SubscriptionClient. Con un utilizzo corretto, questa operazione dovrebbe consentire la restituzione dell'oggetto al pool di oggetti

Libera l'oggetto SubscriptionClient. Se un abbonamento è attivo o in corso, termina immediatamente in modo simile alla chiamata di AbortSubscription(). Le eventuali richieste di aggiornamento in corso vengono interrotte in modo analogo.

L'applicazione è responsabile della chiamata a Free() esattamente una volta durante la durata di un oggetto SubscriptionClient. Dopo la chiamata di 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 (e non un contatore abbonato) 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 dovrebbe essere chiamato dopo che il catalogo TraitDataSink sarà stato modificato.

ResetResubscribe

void ResetResubscribe(
  void
)

Interrompi il meccanismo di riabbonati.

Verrà avviato subito 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 interrompere i nuovi tentativi di richieste di aggiornamento.

Consente all'applicazione di sospendere gli aggiornamenti per un determinato periodo di tempo senza ignorare tutti i metadati. Gli aggiornamenti e i nuovi tentativi verranno ripresi quando verrà chiamato FlushUpdate. Quando viene chiamato per sospendere gli aggiornamenti mentre è in corso un aggiornamento, quest'ultimo non viene annullato, ma se non riesce, non verrà effettuato un nuovo tentativo fino a quando non verrà richiamato FlushUpdate.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)