nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Riepilogo
Tipi pubblici |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Callback per passare gli eventi di abbonamento all'applicazione. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
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
|
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
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:: |
|
nl:: |
Sindacati |
|
---|---|
nl:: |
|
nl:: |
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 |
|
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. |
||||||||||||
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à 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:
|
||||||||||||
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 |
|
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 |
|
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 |
|
||
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 )