nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Zusammenfassung
Öffentliche Typen |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Callback zum Übergeben von Aboereignissen an die Anwendung. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
Callback zum Abrufen des Wartezeitintervalls vor dem 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
Bei der Standardimplementierung der Richtlinie wird ein zufälliger Zeitraum mit einer Auflösung in Millisekunden über ein immer größer werdendes Fenster ausgewählt, nach einer Fibonacci-Folge bis zu WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
|
Ö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 den SubscriptionClient an, die Gruppe von TraitPaths, deren Aktualisierung aussteht, zu leeren und die laufende Aktualisierungsanfrage abzubrechen, falls vorhanden.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Aktivieren Sie automatische erneute Abos.
|
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 das Objekt SubscriptionClient 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
Konfiguriere SubscriptionClient als Initiator (im Gegensatz zu einem Gegenabonnenten) und rufe das Abo auf, 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-Katalog geändert wurde.
|
ResetResubscribe(void)
|
void
Den Mechanismus zum erneuten Abonnieren deaktivieren
|
SetLivenessTimeoutMsec(uint32_t val)
|
void
|
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
|
|
SuspendUpdateRetries()
|
void
Weist SubscriptionClient an, die Wiederholung von Updateanfragen zu stoppen.
|
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 initiiert. Die Anwendung ruft an diesem Punkt möglicherweise EndSubscription(), AbortSubscription() oder Free() auf. |
||||||||||||
kEvent_OnExchangeStart
|
Wird generiert, nachdem die Bindung vorbereitet und ExchangeContext eingerichtet wurde, aber bevor Nachrichten gesendet werden. Das ist die letzte Möglichkeit für eine Anwendung, die ExchangeContext-Einstellungen anzupassen. |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Ein Ereignis, das angibt, dass alle Pfade im Aktualisierungssatz 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 ruft an diesem Punkt möglicherweise EndSubscription(), AbortSubscription() oder Free() auf. |
||||||||||||
kEvent_OnNotificationRequest
|
Wird beim Empfang einer NotificationRequest generiert. Die Anwendung ruft an diesem Punkt möglicherweise EndSubscription(), AbortSubscription() oder Free() auf. |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Wird gesendet, wenn die Suchmaschine zum Senden der SubscribeRequest bereit ist. Die Anwendung muss die Pfade ausfüllen, die sie abonnieren möchte. |
||||||||||||
kEvent_OnSubscriptionActivity
|
Ein Ereignis, das eine Aboaktivität angibt. Sie wird immer dann generiert, wenn der Client einen Hinweis auf die Aboaktivität erhält. Dazu gehören der erfolgreiche Abschluss eines Abos, der Empfang einer NotificationRequest oder der Erhalt eines Statusberichts als Antwort auf die SubscribeConfirm-Nachricht. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Wird bei erfolgreicher Einrichtung des Abos generiert. Die Anwendung ruft an diesem Punkt möglicherweise EndSubscription(), AbortSubscription() oder Free() auf. |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Kennzeichnet das Ende dieses Abos. Die an nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback gesendeten Parameter geben an, ob automatisch ein erneutes Abonnieren versucht wird. Während des Event-Handler-Aufrufs lautet der Status des Clients Die App ruft in diesem Fall möglicherweise AbortSubscription() oder Free() auf. Die gesendeten Parameter enthalten auch einen Fehlercode, der den Grund für die Kündigung des Abos angibt. Das Abo kann aus verschiedenen Gründen gekündigt worden sein, z. B. aufgrund fehlender WRM-Bestätigung, ExchangeContext-Zuweisungsfehler oder Zeitüberschreitung bei der Antwort. Mögliche Fehlercodes, die vom Client generiert werden:
|
||||||||||||
kEvent_OnUpdateComplete
|
Ein Ereignis, das den Abschluss der Aktualisierung angibt. 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 Wartezeitintervalls vor dem nächsten erneuten Abonnieren.
Anwendungen können in dieser Funktion abgebrochen/freigegeben werden, wenn sie beschlossen haben, kein erneutes Abonnement abzuschließen.
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 )
Bei der Standardimplementierung der Richtlinie wird ein zufälliger Zeitraum mit einer Auflösung in Millisekunden über ein immer größer werdendes Fenster ausgewählt, nach einer Fibonacci-Folge bis zu WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
Nach dem WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX beträgt der Durchschnitt der randomisierten Wartezeit etwa eine Stunde. Wenn die Anzahl der Wiederholungen auf 0 zurückgesetzt wird, beginnt die Sequenz von vorn.
Öffentliche Funktionen
AbortSubscription
void AbortSubscription( void )
Abo abbrechen
Ein Kundenabo abbrechen.
Sofort den gesamten mit dem Abo verknüpften Traffic nicht mehr akzeptieren und alle zugrunde liegenden Kommunikationsressourcen freigeben. Das Objekt SubscriptionClient selbst ist weiterhin gültig und kann wieder verwendet werden.
Beendet das Ende eines Abos durch den Client, ohne den Abo-Publisher zu benachrichtigen und ein OnSubscriptionTerminated
-Ereignis an den Event-Handler der Anwendung zu senden. Wenn ein gegenseitiges Abo besteht, wird auch das Gegenabo gekündigt.
Beim Aufrufen von AbortSubscription() wechselt das Objekt SubscriptionClient
in den Status Terminated
. Nach Abschluss des Beendigungsvorgangs wechselt das Objekt in den Status Initialized
. Beide Übergänge erfolgen synchron innerhalb des Aufrufs von AbortSubscription().
Nachdem AbortSubscription() zurückgegeben wurde, kann das Objekt SubscriptionClient
verwendet werden, um ein weiteres Abo zu initiieren, oder es kann durch Aufrufen der Methode Free() freigegeben werden.
ClearUpdated
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
DisableResubscribe
void DisableResubscribe( void )
Deaktivieren Sie den Mechanismus zum erneuten Abonnieren.
Sollte eine erneute Anmeldung ausstehend sein, wird der Vorgang abgebrochen.
DiscardUpdates
void DiscardUpdates()
Weist den SubscriptionClient an, die Gruppe von TraitPaths, deren Aktualisierung aussteht, zu leeren und die laufende Aktualisierungsanfrage abzubrechen, falls vorhanden.
Diese Methode kann von jedem Rückruf aus aufgerufen werden.
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Aktivieren Sie automatische erneute Abos.
Hängen Sie einen Callback an, um die nächste Wiederholungszeit bei einem Fehler anzugeben.
Details | |||
---|---|---|---|
Parameter |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Kündigen Sie das Abo.
Sie kündigen ein Kundenabo ordnungsgemäß.
Wenn die Kompilierungszeitoption WDM_ENABLE_SUBSCRIPTION_CANCEL aktiviert ist, wird das Abo ordnungsgemäß beendet, indem eine Abbruchanfrage an den Peer gesendet wird. Die mit dem Abo verknüpften Ressourcen werden bei einer Antwort des Peers oder bei einer Zeitüberschreitung freigegeben. Wenn die Option deaktiviert ist, entspricht der Aufruf AbortSubscription().
Schließt das Abo des Kunden ordnungsgemäß. Wenn die Unterstützung für die Abokündigung 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 sofort, ähnlich wie bei AbortSubscription(), beendet. Wenn ein gegenseitiges Abo besteht, wird auch das Gegenabo beendet.
Während SubscriptionClient
auf eine Antwort auf eine „SubscribeCancelRequest“ wartet, wechselt sie in den Status Canceling
.
Sobald der Beendigungsprozess beginnt, wechselt das Objekt SubscriptionClient
in den Status Terminated
und ein OnSubscriptionTerminated
-Ereignis wird an den Event-Handler der Anwendung übergeben. Hinweis: Wenn das Kündigen 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 Initialized
-Status. An dieser Stelle 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 Updateaustausch läuft, nimmt der Client alle als aktualisiert markierten Daten in einer einzigen Aktualisierungsanfrage an die antwortende Person weiter. Diese Methode kann von jedem Thread aus aufgerufen werden.
Details | |||
---|---|---|---|
Parameter |
|
||
Rückgabe |
WEAVE_NO_ERROR im Erfolgsfall; andere WEAVE_ERROR-Codes, falls Fehler auftreten.
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
Kostenlos
void Free( void )
Geben Sie das Objekt SubscriptionClient kostenlos.
Geben Sie ein SubscriptionClient
-Objekt kostenlos.
Ruft bei Bedarf AbortSubscription() auf und gibt den Verweis für dieses SubscriptionClient-Objekt frei. Bei richtiger Verwendung sollte dies ermöglichen, 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 auf ähnliche Weise sofort beendet wie AbortSubscription(). Laufende Aktualisierungsanfragen werden ebenfalls abgebrochen.
Die Anwendung muss Free() genau einmal während der Lebensdauer eines SubscriptionClient
-Objekts 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 )
Konfiguriere SubscriptionClient als Initiator (im Gegensatz zu einem Gegenabonnenten) und rufe das Abo auf, 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-Katalog geändert wurde.
ResetResubscribe
void ResetResubscribe( void )
Den Mechanismus zum erneuten Abonnieren deaktivieren
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 Updateanfragen zu stoppen.
Ermöglicht der App, Updates für einen bestimmten Zeitraum auszusetzen, ohne alle Metadaten zu verwerfen. Aktualisierungen und Wiederholungsversuche werden beim Aufruf von FlushUpdate fortgesetzt. Wenn ein Aufruf zum Anhalten von Updates während einer laufenden Aktualisierung aufgerufen wird, wird die Aktualisierung nicht abgebrochen. Falls sie fehlschlägt, wird sie erst wiederholt, wenn FlushUpdate noch einmal aufgerufen wird.
UnlockUpdateMutex
void UnlockUpdateMutex( void )