nl::Weave::Profiles::DataManagement_Current::SubscriptionClient

Podsumowanie

Typy publiczne

@130 enum | typ wyliczeniowy
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Wywołanie zwrotne pozwalające przekazać zdarzenia subskrypcji do aplikacji.
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 | typ wyliczeniowy
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
Wywołanie zwrotne, które pozwala pobrać interwał czasu oczekiwania przed kolejnym odnowieniem.

Publiczne funkcje statyczne

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
Domyślna implementacja zasady wybiera losowy przedział czasu z rozdzielczością w milisekundach w stale rosnącym przedziale czasu, po sekwencji Fibonacciego do WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Funkcje publiczne

AbortSubscription(void)
void
Przerwij subskrypcję.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Wyłącz mechanizm odnawiania subskrypcji.
DiscardUpdates()
void
Powoduje, że SubscriptionClient opróżnia zbiór TraitPaths oczekujących na aktualizację i anuluje przetwarzane żądanie aktualizacji, jeśli takie miało miejsce.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Włącz automatyczne ponowne subskrybowanie.
EndSubscription(void)
Zakończ subskrypcję.
FlushUpdate()
sygnalizuje, że aplikacja zakończyła mutowanie wszystkich TraitUpdatableDataSink.
FlushUpdate(bool aForce)
Free(void)
void
Zwolnij ten obiekt SubscriptionClient.
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
Skonfiguruj SubscriptionClient jako inicjatora (a nie kontrsubskrybenta) i wyświetl subskrypcję, jeśli nie jest.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
Ta metoda powinna być wywoływana po zmodyfikowaniu katalogu TraitDataSink.
ResetResubscribe(void)
void
Wypróbuj mechanizm odnawiania subskrypcji.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Informuje usługę SubscriptionClient, aby przestał ponawiać próby aktualizacji.
UnlockUpdateMutex(void)
void

Struktura

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

Związki

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::OutEventParam

Typy publiczne

@130

 @130

EventCallback

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

Wywołanie zwrotne umożliwiające przekazywanie zdarzeń subskrypcji do aplikacji.

Szczegóły
Parametry
[in] aAppState
Wskaźnik stanu aplikacji ustawiony podczas inicjowania obiektu SubscriptionClient.
[in] aEvent
Wskazuje, o jakie wydarzenie chodzi
[in] aInParam
Uporządkuj z dodatkowymi informacjami o zdarzeniu
[out] aOutParam
Informacje zwrócone przez aplikację

EventID

 EventID
Właściwości
kEvent_OnEventStreamReceived

Wygenerowane, gdy usługa SubscriptionEngine zalicza strumień zdarzeń do wiadomości NotificationRequest.

Aplikacja może teraz wywoływać metody EndSubscription(), AbortSubscription() lub Free().

kEvent_OnExchangeStart

generowane po przygotowaniu powiązania i skonfigurowaniu ExchangeContext, ale przed wysłaniem wiadomości.

To ostatnia szansa na dostosowanie ustawień ExchangeContext przez aplikację. Parametr mEC jest prawidłowy i można go dostosować do ustawień czasu oczekiwania. Aplikacja nie może dotykać innych pól w kliencie ani zamykać ExchangeContext.

kEvent_OnNoMorePendingUpdates

Zdarzenie wskazujące, że wszystkie ścieżki w zestawie aktualizacji zostały przetworzone przez połączenie równorzędne i nie trzeba ich aktualizować.

kEvent_OnNotificationProcessed

Wygenerowane, gdy SubscriptionEngine zakończy wykonywanie żądania NotificationRequest.

Aplikacja może teraz wywoływać metody EndSubscription(), AbortSubscription() lub Free().

kEvent_OnNotificationRequest

Wygenerowane po otrzymaniu żądania NotificationRequest.

Aplikacja może teraz wywoływać metody EndSubscription(), AbortSubscription() lub Free().

kEvent_OnSubscribeRequestPrepareNeeded

Wysyłane, gdy wyszukiwarka będzie gotowa do wysłania żądania Subskrybuj.

Aplikacja powinna wypełniać ścieżki, które chce subskrybować.

kEvent_OnSubscriptionActivity

Zdarzenie wskazujące aktywność związaną z subskrypcją.

Jest on generowany za każdym razem, gdy klient otrzyma informację o aktywności związanej z subskrypcją. Obejmuje to pomyślne nawiązywanie subskrypcji, odebranie żądania NotificationRequest lub otrzymanie raportu o stanie w odpowiedzi na wiadomość SubskrybujConfirm.

kEvent_OnSubscriptionEstablished

Wygenerowane po pomyślnym nawiązaniu subskrypcji.

Aplikacja może teraz wywoływać metody EndSubscription(), AbortSubscription() lub Free().

kEvent_OnSubscriptionTerminated

Oznacza koniec tej subskrypcji.

Parametry wysłane do identyfikatora nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback wskazują, czy nastąpi automatyczna próba ponownego zasubskrybowania.

Podczas wywołania modułu obsługi zdarzeń klient będzie miał stan Terminated. Jeśli nie zostanie podjęta ponowna próba, stan klienta zmieni się na Initialized, gdy moduł obsługi zdarzeń wróci. W przeciwnym razie stan zmieni się na ResubscribeHoldoff, a po czasie wstrzymania zostanie podjęta próba ponownego włączenia subskrypcji.

Aplikacja może w tym stanie wywoływać metodę AbortSubscription() lub Free().

Wysyłane parametry będą też zawierać kod błędu wskazujący przyczynę zakończenia subskrypcji.

Subskrypcja mogła zostać zakończona z różnych powodów (brak potwierdzenia WRM, błąd alokacji ExchangeContext, przekroczenie czasu oczekiwania na odpowiedź itd.) Niektóre możliwe kody błędów wygenerowane przez klienta:

Kod błędu Znaczenie
WEAVE_ERROR_INVALID_MESSAGE_TYPE Odebrano nierozpoznaną wiadomość.
WEAVE_ERROR_TIMEOUT Potwierdzenie nie zostało odebrane lub kontrola żywotności się nie powiodła.
WEAVE_ERROR_INCORRECT_STATE Wiadomości są odbierane w nieoczekiwanym stanie.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Odebrano raport o stanie.
WEAVE_ERROR_INVALID_ARGUMENT Pola prośby o subskrypcję są nieprawidłowe.

kEvent_OnUpdateComplete

Zdarzenie wskazujące zakończenie aktualizacji.

Parametry zdarzenia wskazują, czy aktualizacja określonej ścieżki cech zakończyła się sukcesem czy niepowodzeniem.

ResubscribePolicyCallback

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

Wywołanie zwrotne, które pozwala pobrać interwał czasu oczekiwania przed kolejnym odnowieniem.

Aplikacje w tej funkcji mogą przerywać lub wznawiać działanie, jeśli przestaną rezygnować z ponownej subskrypcji.

Szczegóły
Parametry
[in] aAppState
Wskaźnik stanu aplikacji ustawiony podczas inicjowania obiektu SubscriptionClient.
[in] aInParam
Szczegóły z dodatkowymi informacjami o ponownej próbie
[out] aOutIntervalMsec
Czas oczekiwania (w milisekundach) przed ponowną próbą

Publiczne funkcje statyczne

DefaultEventHandler

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

DefaultResubscribePolicyCallback

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

Domyślna implementacja zasady wybiera losowy przedział czasu z rozdzielczością w milisekundach w stale rosnącym przedziale czasu, po sekwencji Fibonacciego do WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Średni czas oczekiwania w losowym czasie oczekiwania po WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX będzie wynosić około jednej godziny. Gdy liczba ponownych prób zostanie zresetowana do 0, sekwencja zaczyna się od początku.

Funkcje publiczne

AbortSubscription

void AbortSubscription(
  void
)

Przerwij subskrypcję.

Przerwij subskrypcję klienta.

Natychmiast zatrzymaj akceptowanie całego ruchu powiązanego z subskrypcją i zwolnij wszystkie powiązane zasoby komunikacyjne. Sam obiekt SubscriptionClient pozostaje prawidłowy i można go ponownie użyć.

Kończy subskrypcję klienta bez powiadomienia wydawcy subskrypcji i bez dostarczania zdarzenia OnSubscriptionTerminated do modułu obsługi zdarzeń aplikacji. Jeśli istnieje subskrypcja wspólna, subskrypcja licznika też zostanie zakończona.

Po wywołaniu funkcji AbortSubscription() obiekt SubscriptionClient zmienia stan w Terminated. Po zakończeniu procesu zatrzymywania obiekt przechodzi w stan Initialized. Oba przejścia odbywają się synchronicznie w ramach wywołania funkcji AbortSubscription().

Gdy funkcja AbortSubscription() zostanie zwrócona, obiekt SubscriptionClient może zostać użyty do zainicjowania kolejnej subskrypcji lub można go zwolnić, wywołując metodę Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

Wyłącz mechanizm odnawiania subskrypcji.

Zostanie ona przerwana, jeśli oczekiwanie na ponowne subskrybowanie.

DiscardUpdates

void DiscardUpdates()

Powoduje, że SubscriptionClient opróżnia zbiór TraitPaths oczekujących na aktualizację i anuluje przetwarzane żądanie aktualizacji, jeśli takie miało miejsce.

Metodę można wywołać z dowolnego wywołania zwrotnego.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Włącz automatyczne ponowne subskrybowanie.

Dołącz wywołanie zwrotne, aby określić czas następnej próby w przypadku niepowodzenia.

Szczegóły
Parametry
[in] aCallback
Opcjonalne wywołanie zwrotne umożliwiające pobranie czasu oczekiwania przed ponowną próbą w przypadku niepowodzenia. Jeśli wartość NULL, użyj zasady domyślnej.

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Zakończ subskrypcję.

Bez obaw zakończ subskrypcję klienta.

Gdy opcja kompilowania czasu kompilowania WDM_ENABLE_SUBSCRIPTION_CANCEL jest włączona, płynnie zakończ subskrypcję, wysyłając do peera żądanie cancelRequest. Zasoby powiązane z subskrypcją są zwalniane w odpowiedzi na żądanie połączenia równorzędnego lub po przekroczeniu limitu czasu. Gdy ta opcja jest wyłączona, wywołanie odpowiada funkcji AbortSubscription().

W wyrazisty sposób kończy się zakończeniem subskrypcji przez klienta. Jeśli obsługa anulowania subskrypcji jest włączona, do wydawcy subskrypcji jest wysyłana wiadomość SubskrybujCancelRequest, a system czeka na odpowiedź przed zakończeniem subskrypcji. W przeciwnym razie subskrypcja zostanie natychmiast zakończona w sposób podobny do funkcji AbortSubscription(). Jeśli istnieje subskrypcja wspólna, subskrypcja licznika też zostanie zakończona.

Oczekując na odpowiedź na żądanie subscribeCancelRequest, SubscriptionClient przechodzi w stan Canceling.

Po rozpoczęciu procesu zakończenia obiekt SubscriptionClient przechodzi w stan Terminated, a zdarzenie OnSubscriptionTerminated jest dostarczane do modułu obsługi zdarzeń aplikacji. Pamiętaj, że jeśli obsługa anulowania nie jest włączona, moduł obsługi zdarzeń może być wywoływany synchronicznie w ramach wywołania funkcji EndSubscription().

Po zwróceniu modułu obsługi zdarzeń aplikacji obiekt SubscriptionClient zmienia stan na Initialized. W tym momencie obiekt SubscriptionClient może zostać użyty do zainicjowania kolejnej subskrypcji lub można go zwolnić przez wywołanie metody Free().

FlushUpdate

WEAVE_ERROR FlushUpdate()

sygnalizuje, że aplikacja zakończyła mutowanie wszystkich TraitUpdatableDataSink.

Jeśli nie trwa poprzednia wymiana aktualizacji, klient pobierze wszystkie dane oznaczone jako zaktualizowane i wyśle je do respondenta w ramach jednej prośby o aktualizację. Tę metodę można wywołać z dowolnego wątku.

Szczegóły
Parametry
[in] aForce
Jeśli ma wartość true (prawda), aktualizacja jest wysyłana natychmiast, nawet jeśli zaplanowano ponowną próbę w przyszłości. Ten parametr jest domyślnie uznawany za fałsz.
Zwroty
WEAVE_NO_ERROR w przypadku powodzenia; inne kody WEAVE_ERROR w przypadku awarii.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Bezpłatnie

void Free(
  void
)

Zwolnij ten obiekt SubscriptionClient.

Uwolnij obiekt SubscriptionClient.

W razie potrzeby wywołuje metodę AbortSubscription() i zwalnia odwołanie do obiektu SubscriptionClient. Przy prawidłowym wykorzystaniu powinno to umożliwić zwrot obiektu do puli obiektów

Zwalnia obiekt SubscriptionClient. Jeśli subskrypcja jest aktywna lub w toku, zostaje natychmiast zakończona w sposób podobny do wywołania AbortSubscription(). Jeśli są przetwarzane jakiekolwiek żądania aktualizacji, zostaną one przerwane w podobny sposób.

Aplikacja jest odpowiedzialna za wywołanie funkcji Free() dokładnie raz przez cały okres istnienia obiektu SubscriptionClient. Po wywołaniu funkcji Free() nie należy tworzyć żadnych odwołań do obiektu.

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
)

Skonfiguruj SubscriptionClient jako inicjatora (a nie kontrsubskrybenta) i wyświetl subskrypcję, jeśli nie jest.

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()

Ta metoda powinna być wywoływana po zmodyfikowaniu katalogu TraitDataSink.

ResetResubscribe

void ResetResubscribe(
  void
)

Wypróbuj mechanizm odnawiania subskrypcji.

Spowoduje to natychmiastowe rozpoczęcie ponownej próby

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

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

SuspendUpdateRetries

void SuspendUpdateRetries()

Informuje usługę SubscriptionClient, aby przestał ponawiać próby aktualizacji.

Zezwala aplikacji na zawieszenie aktualizacji na określony czas bez odrzucania wszystkich metadanych. Aktualizacje i ponowienia próby zostaną wznowione po wywołaniu FlushUpdate. W przypadku wywołania zawieszenia aktualizacji podczas wysyłania aktualizacji nie zostaje ona anulowana, ale w przypadku niepowodzenia nie jest ponawiana aż do ponownego wywołania FlushUpdate.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)