nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Zusammenfassung
Öffentliche Typen |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedef.void(*
Callback zum Übergeben von Aboereignissen an die Anwendung. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedef.void(*
Callback zum Abrufen des Zeitintervalls bis zum nächsten erneuten Abonnieren. |
Öffentliche statische Funktionen |
|
---|---|
DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
|
void
Die Standard-Richtlinienimplementierung wählt einen zufälligen Zeitraum mit einer Auflösung im Millisekundenbereich über ein stetig zunehmendes Fenster nach einer Fibonacci-Sequenz bis WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX aus.
|
Öffentliche Funktionen |
|
---|---|
AbortSubscription(void)
|
void
Abo abbrechen
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
Deaktivieren Sie den Mechanismus zum erneuten Abonnieren.
|
DiscardUpdates()
|
void
Weist SubscriptionClient an, die Gruppe der TraitPaths zu leeren, die noch nicht aktualisiert werden müssen, und die laufende Aktualisierungsanfrage, falls vorhanden, abzubrechen.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Aktivieren Sie die Option zum automatischen erneuten Abonnieren.
|
EndSubscription(void)
|
Kündigen Sie das Abo.
|
FlushUpdate()
|
Signalisiert, dass die Anwendung das Mutieren aller TraitUpdatableDataSinks abgeschlossen hat.
|
FlushUpdate(bool aForce)
|
|
Free(void)
|
void
Geben Sie dieses SubscriptionClient-Objekt kostenlos.
|
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
Konfigurieren Sie SubscriptionClient als Initiator (und nicht als Gegenabonnenten) und starten Sie das Abo, falls dies nicht der Fall ist.
|
IsCanceling() const
|
bool
|
IsEstablished()
|
bool
|
IsEstablishedIdle()
|
bool
|
IsFree()
|
bool
|
IsInProgressOrEstablished()
|
bool
|
IsInResubscribeHoldoff()
|
bool
|
IsRetryEnabled()
|
bool
|
IsTerminated()
|
bool
|
IsUpdatePendingOrInProgress()
|
bool
|
LockUpdateMutex(void)
|
void
|
OnCatalogChanged()
|
void
Diese Methode sollte aufgerufen werden, wenn der TraitDataSink geändert wurde.
|
ResetResubscribe(void)
|
void
Aktivieren Sie den Mechanismus zum erneuten Abonnieren.
|
SetLivenessTimeoutMsec(uint32_t val)
|
void
|
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
|
|
SuspendUpdateRetries()
|
void
Weist SubscriptionClient an, die Wiederholung von Aktualisierungsanfragen zu beenden.
|
UnlockUpdateMutex(void)
|
void
|
Strukturen |
|
---|---|
nl:: |
|
nl:: |
Gewerkschaften |
|
---|---|
nl:: |
|
nl:: |
Öffentliche Typen
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Callback zum Übergeben von Aboereignissen an die Anwendung.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
EventID
EventID
Attribute | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
Wird generiert, wenn SubscriptionEngine einen Ereignisstream in der NotificationRequest-Nachricht erfasst. Die Anwendung kann an dieser Stelle EndSubscription(), AbortSubscription() oder Free() aufrufen. |
||||||||||||
kEvent_OnExchangeStart
|
Wird generiert, nachdem die Bindung vorbereitet und ExchangeContext eingerichtet wurde, aber bevor Nachrichten gesendet werden. Dies ist die letzte Möglichkeit für eine Anwendung, die ExchangeContext-Einstellungen anzupassen. |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Ein Ereignis, das angibt, dass alle Pfade im Update-Dataset vom Peer verarbeitet wurden und keine weiteren Pfade aktualisiert werden müssen. |
||||||||||||
kEvent_OnNotificationProcessed
|
Wird generiert, wenn SubscriptionEngine die Verarbeitung einer NotificationRequest-Nachricht beendet. Die Anwendung kann an dieser Stelle EndSubscription(), AbortSubscription() oder Free() aufrufen. |
||||||||||||
kEvent_OnNotificationRequest
|
Wird nach dem Empfang einer NotificationRequest generiert. Die Anwendung kann an dieser Stelle EndSubscription(), AbortSubscription() oder Free() aufrufen. |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Wird gesendet, wenn die Engine zum Senden der SubscribeRequest bereit ist. Es wird erwartet, dass die Anwendung die Pfade ausfüllt, die sie abonnieren möchte. |
||||||||||||
kEvent_OnSubscriptionActivity
|
Ein Ereignis, das auf Aboaktivitäten hinweist. Er wird immer dann generiert, wenn der Kunde einen Hinweis zur Aboaktivität erhält. Dazu gehören eine erfolgreiche Abonnementeinrichtung, der Empfang einer NotificationRequest oder der Erhalt eines Statusberichts als Antwort auf die SubscribeConfirm-Nachricht. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Wird nach einer erfolgreichen Einrichtung des Abos generiert. Die Anwendung kann an dieser Stelle EndSubscription(), AbortSubscription() oder Free() aufrufen. |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Kennzeichnet das Ende dieses Abos. Die an nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback gesendeten Parameter geben an, ob automatisch versucht wird, ein Abo abzuschließen. Während des Event-Handler-Aufrufs hat der Client den Status Die App kann in diesem Status AbortSubscription() oder Free() aufrufen. Die gesendeten Parameter enthalten auch einen Fehlercode, der den Grund für die Beendigung des Abos angibt. Das Abo kann aus verschiedenen Gründen beendet worden sein (WRM-Bestätigung fehlt, ExchangeContext-Zuweisungsfehler, Antwortzeitüberschreitung usw.) Mögliche Fehlercodes, die vom Client generiert werden:
|
||||||||||||
kEvent_OnUpdateComplete
|
Ein Ereignis, das den Abschluss der Aktualisierung anzeigt. Ereignisparameter geben an, ob die Aktualisierung eines bestimmten Trait-Pfads erfolgreich war oder fehlgeschlagen ist. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Callback zum Abrufen des Zeitintervalls bis zum nächsten erneuten Abonnieren.
Apps dürfen im Rahmen dieser Funktion abgebrochen bzw. kostenlos angeboten werden, wenn sie auf erneute Abonnements verzichten möchten.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Öffentliche statische Funktionen
DefaultEventHandler
void DefaultEventHandler( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
DefaultResubscribePolicyCallback
void DefaultResubscribePolicyCallback( void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec )
Die Standard-Richtlinienimplementierung wählt einen zufälligen Zeitraum mit einer Auflösung im Millisekundenbereich über ein stetig wachsendes Fenster nach einer Fibonacci-Sequenz bis WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX aus.
Die durchschnittliche Wartezeit nach dem WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX liegt bei etwa einer Stunde. Wenn die Anzahl der Wiederholungen auf 0 zurückgesetzt wird, beginnt die Sequenz wieder von vorn.
Öffentliche Funktionen
AbortSubscription
void AbortSubscription( void )
Abo abbrechen
Kundenabo abbrechen
Ab sofort keinen Traffic mehr annehmen, der mit dem Abo verknüpft ist, und alle zugrunde liegenden Kommunikationsressourcen freigeben. Das SubscriptionClient-Objekt selbst bleibt gültig und kann erneut verwendet werden.
Beendet das Ende eines Abos durch den Client, ohne den Abo-Publisher zu benachrichtigen und ohne ein OnSubscriptionTerminated
-Ereignis an den Event-Handler der Anwendung zu senden. Wenn ein gegenseitiges Abonnement vorhanden ist, wird auch das Zähler-Abonnement beendet.
Nach dem Aufrufen von AbortSubscription() wechselt das Objekt SubscriptionClient
in den Status Terminated
. Sobald der Beendigungsprozess abgeschlossen ist, wechselt das Objekt in den Status Initialized
. Beide Übergänge erfolgen synchron innerhalb des Aufrufs von AbortSubscription().
Nachdem AbortSubscription() zurückgegeben wurde, kann das SubscriptionClient
-Objekt verwendet werden, um ein weiteres Abo zu initiieren, oder es kann durch Aufrufen der Free()-Methode freigegeben werden.
ClearUpdated
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
DisableResubscribe
void DisableResubscribe( void )
Deaktivieren Sie den Mechanismus zum erneuten Abonnieren.
Dieser Vorgang wird abgebrochen, wenn ein erneutes Abonnieren aussteht.
DiscardUpdates
void DiscardUpdates()
Weist SubscriptionClient an, die Gruppe der TraitPaths zu leeren, die noch nicht aktualisiert werden müssen, und die laufende Aktualisierungsanfrage, falls vorhanden, abzubrechen.
Diese Methode kann über jeden Callback aufgerufen werden.
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Aktivieren Sie die Option zum automatischen erneuten Abonnieren.
Hängen Sie einen Callback an, um den nächsten Wiederholungszeitpunkt bei einem Fehler anzugeben.
Details | |||
---|---|---|---|
Parameter |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Kündigen Sie das Abo.
Clientabo ordnungsgemäß beenden.
Wenn die Option zur Kompilierungszeit WDM_ENABLE_SUBSCRIPTION_CANCEL aktiviert ist, können Sie das Abo ordnungsgemäß beenden, indem Sie eine „CancelRequest“ an den Peer senden. Die mit dem Abo verknüpften Ressourcen werden bei der Antwort des Peers oder bei einer Zeitüberschreitung freigegeben. Wenn die Option deaktiviert ist, entspricht der Aufruf AbortSubscription().
Beenden eines Abos für den Client ordnungsgemäß. Wenn die Unterstützung für die Kündigung von Abos aktiviert ist, wird eine „SubscribeCancelRequest“-Nachricht an den Abo-Publisher gesendet und das System wartet auf eine Antwort, bevor das Abo gekündigt wird. Andernfalls wird das Abo auf ähnliche Weise wie AbortSubscription() sofort gekündigt. Wenn ein gegenseitiges Abonnement vorhanden ist, wird auch das Zähler-Abonnement beendet.
Während die SubscriptionClient
auf eine Antwort auf eine SubscribeCancelRequest wartet, wechselt sie in den Status Canceling
.
Sobald der Beendigungsprozess beginnt, wechselt das SubscriptionClient
-Objekt in den Status Terminated
und ein OnSubscriptionTerminated
-Ereignis wird an den Event-Handler der Anwendung gesendet. Wenn die Unterstützung zum Abbrechen nicht aktiviert ist, kann der Event-Handler innerhalb des Aufrufs von EndSubscription() synchron aufgerufen werden.
Nachdem der Event-Handler der Anwendung zurückgegeben hat, wechselt das SubscriptionClient
-Objekt in den Status Initialized
. Jetzt kann das SubscriptionClient
-Objekt verwendet werden, um ein weiteres Abo zu initiieren, oder es kann durch Aufrufen der Free()-Methode freigegeben werden.
FlushUpdate
WEAVE_ERROR FlushUpdate()
Signalisiert, dass die Anwendung das Mutieren aller TraitUpdatableDataSinks abgeschlossen hat.
Sofern kein vorheriger Aktualisierungsaustausch durchgeführt wird, nimmt der Client alle Daten, die als aktualisiert markiert sind, in einer Aktualisierungsanfrage an den Teilnehmer, der sie aktualisiert hat. Diese Methode kann von jedem Thread aus aufgerufen werden.
Details | |||
---|---|---|---|
Parameter |
|
||
Rückgabe |
WEAVE_NO_ERROR im Falle eines Erfolgs; andere WEAVE_ERROR-Codes verwenden, falls ein Fehler auftritt.
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
Kostenlos
void Free( void )
Geben Sie dieses SubscriptionClient-Objekt kostenlos.
Geben Sie ein SubscriptionClient
-Objekt kostenlos.
Ruft bei Bedarf AbortSubscription() auf und gibt den refcount für dieses SubscriptionClient-Objekt frei. Bei korrekter Verwendung sollte dies dazu führen, dass das Objekt an den Objektpool zurückgegeben werden kann.
Gibt das SubscriptionClient
-Objekt frei. Wenn ein Abo aktiv oder in Bearbeitung ist, wird es sofort gekündigt, ähnlich wie beim Aufrufen von AbortSubscription(). Laufende Aktualisierungsanfragen werden auf ähnliche Weise abgebrochen.
Die Anwendung muss Free() während der Lebensdauer eines SubscriptionClient
-Objekts genau einmal aufrufen. Nach dem Aufruf von Free() sollten keine weiteren Verweise auf das Objekt erfolgen.
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 )
Konfigurieren Sie SubscriptionClient als Initiator (und nicht als Gegenabonnenten) und starten Sie das Abo, falls dies nicht der Fall ist.
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()
Diese Methode sollte aufgerufen werden, wenn der TraitDataSink geändert wurde.
ResetResubscribe
void ResetResubscribe( void )
Aktivieren Sie den Mechanismus zum erneuten Abonnieren.
Dadurch wird sofort ein neuer Versuch gestartet
SetLivenessTimeoutMsec
void SetLivenessTimeoutMsec( uint32_t val )
SetUpdated
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
Weist SubscriptionClient an, die Wiederholung von Aktualisierungsanfragen zu beenden.
Ermöglicht der App, Updates für einen bestimmten Zeitraum auszusetzen, ohne alle Metadaten zu verwerfen. Updates und Wiederholungsversuche werden fortgesetzt, wenn FlushUpdate aufgerufen wird. Wird aufgerufen, um Updates auszusetzen, während ein Update ausgeführt wird, wird das Update nicht abgebrochen, aber falls es fehlschlägt, wird es erst dann wiederholt, wenn FlushUpdate erneut aufgerufen wird.
UnlockUpdateMutex
void UnlockUpdateMutex( void )