Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

nl::Weave::Profile::DataManagement_Current::SubscriptionClient

Zusammenfassung

Öffentliche Typen

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) Typdef
void(*
Callback, um Aboereignisse an die Anwendung zu übergeben.
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) Typdef
void(*
Rückruf zum Abrufen des Zeitintervalls, das vor dem nächsten erneuten Abonnieren gewartet wird.

Öffentliche statische Funktionen

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
Bei der Implementierung der Standardrichtlinie wird ein zufälliger Zeitblock mit einer Auflösung von Millisekunden in einem ständig größer werdenden Zeitfenster nach einer Fibonacci-Sequenz bis WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX ausgewählt.

Öffentliche Funktionen

AbortSubscription(void)
void
Abo kündigen.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Die Option „Wieder abonnieren“ deaktivieren.
DiscardUpdates()
void
Weist den SubscriptionClient an, den Satz der zu aktualisierenden TraitPaths zu leeren und die laufende Aktualisierungsanfrage abzubrechen, falls vorhanden.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Automatisches erneutes Abonnieren aktivieren.
EndSubscription(void)
Beenden Sie das Abo.
FlushUpdate()
Signalisiert, dass die Anwendung alle TraitUpdatableDataSenken mutiert hat.
FlushUpdate(bool aForce)
Free(void)
void
Geben Sie dieses SubscriptionClient-Objekt kostenlos.
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
Konfigurieren Sie den SubscriptionClient als Initiator (statt eines Subabonnenten) und rufen Sie das Abo auf, wenn 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 TraitDataSenken-Katalog geändert wurde.
ResetResubscribe(void)
void
Schalte den Mechanismus zum erneuten Abonnieren ein.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Weist den SubscriptionClient an, die Wiederholung von Updateanfragen zu beenden.
UnlockUpdateMutex(void)
void

Structs

nl::Weave::Profile::DataManagement_Current::SubscriptionClient::LastObserveEvent
nl::Weave::Profile::DataManagement_Current::SubscriptionClient::ResubscribeParam

Gewerkschaften

nl::Weave::Profile::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profile::DataManagement_Current::SubscriptionClient::OutEventParam

Öffentliche Typen

@130

 @130

Ereignisrückruf

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

Callback, um Aboereignisse an die Anwendung zu übergeben.

Details
Parameter
[in] aAppState
App-Statuszeiger, der während der Initialisierung von SubscriptionClient festgelegt wird.
[in] aEvent
Gibt an, welches Ereignis stattfindet
[in] aInParam
Strukturieren Sie zusätzliche Details zum Ereignis.
[out] aOutParam
Von der Anwendung zurückgegebene Informationen

Ereignis-ID

 EventID
Attribute
kEvent_OnEventStreamReceived

Wird generiert, wenn die SubscriptionEngine einen Ereignisstream in der NotificationRequest-Nachricht umfasst.

Die App kann jetzt 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 Chance, dass eine Anwendung ExchangeContext-Einstellungen anpasst. mEC ist gültig und kann auf Zeitüberschreitungseinstellungen abgestimmt werden. Die Anwendung darf keine anderen Felder im Client berühren und darf den ExchangeContext nicht schließen.

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 Bearbeitung einer Benachrichtigungsanfrage abgeschlossen hat.

Die App kann jetzt EndSubscription(), AbortSubscription() oder Free() aufrufen.

kEvent_OnNotificationRequest

Wird bei einer Benachrichtigungsanfrage generiert.

Die App kann jetzt EndSubscription(), AbortSubscription() oder Free() aufrufen.

kEvent_OnSubscribeRequestPrepareNeeded

Wird gesendet, wenn die Suchmaschine zum Senden der „Abonnierenanfrage“ bereit ist

Die Anwendung füllt die Pfade, die sie abonnieren möchte.

kEvent_OnSubscriptionActivity

Ein Ereignis, das die Aboaktivität angibt.

Sie wird jedes Mal generiert, wenn der Kunde einen Hinweis auf die Aboaktivität erhält. Dazu gehören die erfolgreiche Einrichtung eines Abos, der Empfang einer Benachrichtigungsanfrage oder der Erhalt eines Statusberichts als Antwort auf die „ConfirmConfirm“-Nachricht.

kEvent_OnSubscriptionEstablished

Wird nach der erfolgreichen Einrichtung des Abos generiert.

Die App kann jetzt 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 ein neues Abo automatisch versucht wird.

Während des Ereignis-Handler-Aufrufs hat der Client den Status Terminated. Wenn kein neuer Versuch unternommen wird, wechselt der Status des Clients zu Initialized, wenn der Ereignis-Handler zurückgegeben wird. Andernfalls wechselt der Bundesstaat zu ResubscribeHoldoff und versucht nach der Wartezeit, das Abo wiederherzustellen.

Die App kann in diesem Zustand AbortSubscription() oder Free() aufrufen.

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 beendet werden (WRM-ACK fehlt, ExchangeContext-Zuweisungsfehler, Antwort-Timeout usw.). Mögliche Fehlercodes, die vom Client generiert wurden:

Fehlercode Bedeutung
WEAVE_ERROR_INVALID_MESSAGE_TYPE Eine unbekannte Nachricht wurde empfangen.
WEAVE_ERROR_TIMEOUT Es wurde keine Bestätigung empfangen oder bei einer Aktivitätsprüfung ist ein Fehler aufgetreten.
WEAVE_ERROR_INCORRECT_STATE Nachrichten erhalten einen unerwarteten Status.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Ein Statusbericht wurde empfangen.
WEAVE_ERROR_INVALID_INSTANCE Die Felder für die Aboanfrage sind ungültig.

kEvent_OnUpdateComplete

Ein Ereignis, das die Beendigung des Updates angibt.

Ereignisparameter geben an, ob die Aktualisierung eines bestimmten Bewegungspfads erfolgreich war oder fehlgeschlagen ist.

Erneuter Richtlinienrückruf

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

Rückruf zum Abrufen des Zeitintervalls, das vor dem nächsten erneuten Abonnieren gewartet wird.

Apps können diese Funktion abbrechen/freigeben, wenn sie ein neues Abo beenden möchten.

Details
Parameter
[in] aAppState
App-Statuszeiger, der während der Initialisierung von SubscriptionClient festgelegt wird.
[in] aInParam
Strecke mit zusätzlichen Details zur Wiederholung
[out] aOutIntervalMsec
Wartezeit in Millisekunden bis zum nächsten Versuch

Öffentliche statische Funktionen

Standardereignis-Handler

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

Standardrückrufrichtlinie für Rückruf

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

Bei der Implementierung der Standardrichtlinie wird ein zufälliger Zeitblock mit einer Auflösung von Millisekunden in einem ständig größer werdenden Zeitfenster nach einer Fibonacci-Sequenz bis WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX ausgewählt.

Der Durchschnitt der zufälligen 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 noch einmal von vorn.

Öffentliche Funktionen

Abo kündigen

void AbortSubscription(
  void
)

Abo kündigen.

Clientabo kündigen.

Beenden Sie sofort den gesamten Traffic, der mit dem Abo verknüpft ist, und geben Sie alle zugrunde liegenden Kommunikationsressourcen kostenlos. Das SubscriptionClient-Objekt bleibt gültig und kann wieder verwendet werden.

Beendet das Clientende eines Abos, ohne den Aboverlag zu benachrichtigen oder ein OnSubscriptionTerminated-Ereignis an den Ereignis-Handler der App zu übergeben. Wenn ein gegenseitiges Abo besteht, wird auch dieses gekündigt.

Beim Aufruf von AbortSubscription() erhält das SubscriptionClient-Objekt den Status Terminated. Sobald der Vorgang abgeschlossen ist, erhält das Objekt den Status Initialized. Beide Übergänge werden synchron im Aufruf von AbortSubscription() ausgeführt.

Nachdem AbortSubscription() zurückgegeben wurde, kann das SubscriptionClient-Objekt verwendet werden, um ein anderes Abo zu initiieren, oder es kann durch Aufrufen der Methode Free() freigegeben werden.

Aktualisiert

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

Wieder abonnieren

void DisableResubscribe(
  void
)

Die Option „Wieder abonnieren“ deaktivieren.

Dies wird abgebrochen, wenn eine erneute Anmeldung aussteht.

Updates verwerfen

void DiscardUpdates()

Weist den SubscriptionClient an, den Satz der zu aktualisierenden TraitPaths zu leeren und die laufende Aktualisierungsanfrage abzubrechen, falls vorhanden.

Diese Methode kann von jedem Callback aufgerufen werden.

Wieder abonnieren

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Automatisches erneutes Abonnieren aktivieren.

Hängen Sie einen Callback an, um den Zeitpunkt der nächsten Wiederholung bei einem Fehler anzugeben.

Details
Parameter
[in] aCallback
Optionaler Callback zum Abrufen der Wartezeit, bevor nach einem Fehler noch einmal versucht wird. Wenn NULL, wird eine Standardrichtlinie verwendet.

Abo beenden

WEAVE_ERROR EndSubscription(
  void
)

Beenden Sie das Abo.

Kündige ein Kundenabo ordnungsgemäß.

Wenn die Option WDM_ENABLE_SUBSCRIPTION_CANCEL für die Kompilierungszeit aktiviert ist, beenden Sie das Abo ordnungsgemäß, indem Sie eine „CancelRequest“-Anfrage an den Peer senden. Die mit dem Abo verknüpften Ressourcen werden bei Antwort des Peers oder bei einer Zeitüberschreitung freigegeben. Wenn die Option deaktiviert ist, entspricht der Aufruf AbortSubscription().

Kündigt das Beendigungsdatum des Abos ordnungsgemäß. Wenn die Unterstützung für Abokündigungen aktiviert ist, wird eine „CancelCancelRequest“-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() gekündigt. Falls ein gegenseitiges Abo besteht, wird auch das Zählerabo gekündigt.

Während der Antwort auf ein „CancelCancelRequest“ wird SubscriptionClient in den Status Canceling versetzt.

Sobald der Abbruchvorgang beginnt, wechselt das SubscriptionClient-Objekt in den Status Terminated und ein OnSubscriptionTerminated-Ereignis wird an den Ereignis-Handler der Anwendung gesendet. Hinweis: Wenn die Unterstützung zum Abbrechen nicht aktiviert ist, kann der Ereignis-Handler innerhalb des Aufrufs von EndSubscription() synchron aufgerufen werden.

Nachdem der Ereignis-Handler der Anwendung zurückgegeben wurde, wechselt das Objekt SubscriptionClient in den Status Initialized. An dieser Stelle kann das SubscriptionClient-Objekt verwendet werden, um ein anderes Abo zu initiieren, oder es kann durch Aufrufen der Free()-Methode freigegeben werden.

Aktualisierung

WEAVE_ERROR FlushUpdate()

Signalisiert, dass die Anwendung alle TraitUpdatableDataSenken mutiert hat.

Sofern keine vorherige Aktualisierung stattfindet, sendet der Client alle als aktualisiert markierten Daten in einer Aktualisierungsanfrage an den Abwesenheitsnotiz. Diese Methode kann von jedem Thread aufgerufen werden.

Details
Parameter
[in] aForce
Bei „true“ wird das Update sofort gesendet, auch wenn ein neuer Versuch in der Zukunft geplant ist. Dieser Parameter gilt standardmäßig als falsch.
Rückgabe
WEAVE_NO_ERROR (bei Erfolg; andere WEAVE_ERROR-Codes bei einem Fehler).

Aktualisierung

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Kostenlos

void Free(
  void
)

Geben Sie dieses SubscriptionClient-Objekt kostenlos.

Ein SubscriptionClient-Objekt freigeben.

Ruft gegebenenfalls AbortSubscription() auf und gibt die Referenz für dieses SubscriptionClient-Objekt kostenlos. Bei korrekter Verwendung sollte dies das Zurückkehren des Objekts in den Objektpool ermöglichen.

Gibt das Objekt SubscriptionClient kostenlos. Wenn ein Abo aktiv ist oder läuft, wird es sofort auf ähnliche Weise beendet wie AbortSubscription(). Sind laufende Updateanfragen aktiv, werden sie auf ähnliche Weise abgebrochen.

Die App ist dafür verantwortlich, Free() während der Lebensdauer eines SubscriptionClient-Objekts genau einmal aufzurufen. Nach dem Aufruf von Free() sollten keine weiteren Verweise auf das Objekt erfolgen.

GetBindung

Binding * GetBinding(
  void
) const 

GetLivenessTimeoutMsec

uint32_t GetLivenessTimeoutMsec(
  void
) const 

PeerNodeId abrufen

uint64_t GetPeerNodeId(
  void
) const 

GetSubscriptionId (Abo-ID)

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

Hinweisaktivität

void IndicateActivity(
  void
)

Zählerabo initiieren

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

Abo starten

void InitiateSubscription(
  void
)

Konfigurieren Sie den SubscriptionClient als Initiator (statt eines Subabonnenten) und rufen Sie das Abo auf, wenn dies nicht der Fall ist.

Wird abgebrochen

bool IsCanceling() const 

Ist gegründet

bool IsEstablished()

IstEtabliertIdle

bool IsEstablishedIdle()

Ist kostenlos

bool IsFree()

Ist in Bearbeitung oder etabliert

bool IsInProgressOrEstablished()

In-ResubscribeHoldoff

bool IsInResubscribeHoldoff()

IsRetryEnabled

bool IsRetryEnabled()

Wird beendet

bool IsTerminated()

Ist/Ausstehend/In Bearbeitung

bool IsUpdatePendingOrInProgress()

LockUpdateStummschaltenx

void LockUpdateMutex(
  void
)

Katalog geändert

void OnCatalogChanged()

Diese Methode sollte aufgerufen werden, wenn der TraitDataSenken-Katalog geändert wurde.

Wieder abonnieren

void ResetResubscribe(
  void
)

Schalte den Mechanismus zum erneuten Abonnieren ein.

Dadurch wird sofort ein neuer Versuch gestartet.

Zeitüberschreitung bei SetLiveness

void SetLivenessTimeoutMsec(
  uint32_t val
)

Aktualisiert

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

Sperr-Update-Versuche

void SuspendUpdateRetries()

Weist den SubscriptionClient an, die Wiederholung von Updateanfragen zu beenden.

Ermöglicht der App, Updates für einen bestimmten Zeitraum auszusetzen, ohne alle Metadaten zu verwerfen. Updates und Wiederholungsversuche werden beim Aufrufen von FlushUpdate fortgesetzt. Wird eine Aktualisierung angehalten, während eine Aktualisierung läuft, wird die Aktualisierung nicht abgebrochen. Sollte sie fehlschlagen, wird sie erst dann wiederholt, wenn FlushUpdate noch einmal aufgerufen wird.

EntsperrenStummschaltenx

void UnlockUpdateMutex(
  void
)