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 eventi di abbonamento all'applicazione. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
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
|
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 (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:: |
|
nl:: |
Unione |
|
---|---|
nl:: |
|
nl:: |
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 |
|
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. |
||||||||||||
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à 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:
|
||||||||||||
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 |
|
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 |
|
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 |
|
||
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 )