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 w celu przekazania zdarzeń 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, aby pobrać interwał czasu oczekiwania do następnego odnowienia subskrypcji.

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 rosnącym okresie zgodnie z sekwencją fibonacci aż do WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX.

Funkcje publiczne

AbortSubscription(void)
void
Przerwij subskrypcję.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
wyłączyć mechanizm odnawiania subskrypcji.
DiscardUpdates()
void
Powoduje, że SubscriptionClient opróżnia zestaw TraitPaths oczekujących na aktualizację i przerywa trwające żądanie aktualizacji (jeśli takie istnieje).
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Włącz automatyczne odnawianie subskrypcji.
EndSubscription(void)
Zakończ subskrypcję.
FlushUpdate()
Informuje, że aplikacja zakończyła mutację wszystkich obiektów TraitUpdatableDataSink.
FlushUpdate(bool aForce)
Free(void)
void
Zwolnij 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 (w przeciwieństwie do prenumeratora licznika) i wywołaj 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 zostać wywołana po zmodyfikowaniu katalogu TraitDataSink.
ResetResubscribe(void)
void
Uruchom mechanizm odnawiania subskrypcji.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Powiadamia SubscriptionClient, że ma przestać ponawiać próby aktualizacji.
UnlockUpdateMutex(void)
void

Konstrukcja

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 w celu przekazania zdarzeń subskrypcji do aplikacji.

Szczegóły
Parametry
[in] aAppState
Wskaźnik stanu aplikacji ustawiony podczas inicjowania obiektu SubscriptionClient.
[in] aEvent
Wskazuje, jakie zdarzenie ma miejsce
[in] aInParam
Struktura z dodatkowymi informacjami o zdarzeniu
[out] aOutParam
Informacje przekazane z powrotem przez aplikację

EventID

 EventID
Właściwości
kEvent_OnEventStreamReceived

Generujemy, gdy mechanizm SubscriptionEngine uwzględnia strumień zdarzeń w wiadomości NotificationRequest.

Aplikacja może w tym momencie wywołać metodę EndSubscription(), AbortSubscription() lub Free().

kEvent_OnExchangeStart

Wygenerowane po przygotowaniu powiązania i skonfigurowaniu ExchangeContext, ale przed wysłaniem jakichkolwiek komunikatów.

To ostatnia szansa na dostosowanie przez aplikację ustawień ExchangeContext. Domena mEC jest prawidłowa i można ją dostosować pod kątem ustawień limitu czasu. Aplikacja nie może dotykać innych pól klienta ani zamykać ExchangeContext.

kEvent_OnNoMorePendingUpdates

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

kEvent_OnNotificationProcessed

Generujemy po zakończeniu przetwarzania wiadomości NotificationRequest przez SubscriptionEngine.

Aplikacja może w tym momencie wywołać metodę EndSubscription(), AbortSubscription() lub Free().

kEvent_OnNotificationRequest

Wygenerowane po otrzymaniu żądania NotificationRequest.

Aplikacja może w tym momencie wywołać metodę 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 zasubskrybować.

kEvent_OnSubscriptionActivity

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

Jest on generowany za każdym razem, gdy klient otrzyma informację o aktywności subskrypcji. Obejmuje to pomyślne rozpoczęcie subskrypcji, odbiór żądania powiadamiania lub raportu o stanie w odpowiedzi na wiadomość SubscribeConfirm.

kEvent_OnSubscriptionEstablished

Wygenerowane po pomyślnym utworzeniu subskrypcji.

Aplikacja może w tym momencie wywołać metodę EndSubscription(), AbortSubscription() lub Free().

kEvent_OnSubscriptionTerminated

Oznacza koniec tej subskrypcji.

Parametry wysyłane do metody nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback wskazują, czy zostanie automatycznie podjęta próba ponownej subskrypcji.

Podczas wywołania modułu obsługi zdarzeń stan klienta będzie miał wartość Terminated. Jeśli nie zostanie podjęta próba ponowienia próby, po powrocie modułu obsługi zdarzeń stan klienta zmieni się na Initialized. W przeciwnym razie stan zmieni się na ResubscribeHoldoff, a po upływie czasu wstrzymania zostanie podjęta próba przywrócenia subskrypcji.

W tym stanie aplikacja może 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 przydziału ExchangeContext, czas oczekiwania na odpowiedź...) Niektóre możliwe kody błędów wygenerowane przez klienta:

Kod błędu Znaczenie
WEAVE_ERROR_INVALID_MESSAGE_TYPE Otrzymano nierozpoznaną wiadomość.
WEAVE_ERROR_TIMEOUT Nie otrzymano potwierdzenia lub kontrola żywotności się nie uda.
WEAVE_ERROR_INCORRECT_STATE Wiadomości zostały odebrane w nieoczekiwanym stanie.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Otrzymano raport o stanie.
WEAVE_ERROR_INVALID_ARGUMENT Pola żądania subskrypcji są nieprawidłowe.

kEvent_OnUpdateComplete

Zdarzenie oznaczające zakończenie aktualizacji.

Parametry zdarzenia będą wskazywać, czy aktualizacja określonej ścieżki cechy zakończyła się powodzeniem czy niepowodzeniem.

ResubscribePolicyCallback

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

Wywołanie zwrotne, aby pobrać interwał czasu oczekiwania do następnego odnowienia subskrypcji.

W przypadku aplikacji, które zrezygnowały z ponownej subskrypcji, ta funkcja może zostać przerwana.

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

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 rosnącym okresie zgodnie z sekwencją fibonacci aż do WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX.

Średnia losowego czasu oczekiwania po WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX będzie wynosić około godziny. Gdy liczba ponownych prób zresetuje się do 0, sekwencja zacznie się od początku.

Funkcje publiczne

AbortSubscription

void AbortSubscription(
  void
)

Przerwij subskrypcję.

Przerwij subskrypcję klienta.

Natychmiast przestań akceptować cały ruch powiązany z subskrypcją i zwolnij wszystkie powiązane zasoby komunikacyjne. Sam obiekt SubscriptionClient pozostaje ważny i można go użyć ponownie.

Kończy subskrypcję przez klienta bez powiadamiania wydawcy subskrypcji i bez dostarczania zdarzenia OnSubscriptionTerminated do modułu obsługi zdarzeń aplikacji. Jeśli istnieje subskrypcja wzajemna, subskrypcja licznika również zostanie zakończona.

Po wywołaniu AbortSubscription() obiekt SubscriptionClient przechodzi w stan Terminated. Po zakończeniu procesu usuwania obiekt przechodzi w stan Initialized. Oba przejścia mają miejsce 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 uwolniony, wywołując metodę Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

wyłączyć mechanizm odnawiania subskrypcji.

Ta czynność zostanie przerwana, jeśli oczekiwana była ponowna subskrypcja.

DiscardUpdates

void DiscardUpdates()

Powoduje, że SubscriptionClient opróżnia zestaw TraitPaths oczekujących na aktualizację i przerywa trwające żądanie aktualizacji (jeśli takie istnieje).

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

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Włącz automatyczne odnawianie subskrypcji.

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

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

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Zakończ subskrypcję.

Zakończ w prawidłowy sposób subskrypcję klienta.

Gdy opcja czasu kompilacji WDM_ENABLE_SUBSCRIPTION_CANCEL jest włączona, możesz płynnie zakończyć subskrypcję, wysyłając SendRequest do peera. Zasoby powiązane z subskrypcją zostaną zwolnione po odpowiedzi z peera lub po przekroczeniu limitu czasu. Gdy ta opcja jest wyłączona, wywołanie jest równoważne funkcji AbortSubscription().

Głęboko kończy subskrypcję klienta. Jeśli obsługa anulowania subskrypcji jest włączona, do wydawcy subskrypcji wysyłany jest komunikat SubscribeCancelRequest, a system czeka na odpowiedź przed zakończeniem subskrypcji. W przeciwnym razie subskrypcja zostanie natychmiast zakończona, podobnie jak w przypadku metody AbortSubscription(). Jeśli istnieje wspólna subskrypcja, także zostanie zakończona.

Podczas oczekiwania na odpowiedź na żądanie SubscribeCancelRequest SubscriptionClient przechodzi w stan Canceling.

Po rozpoczęciu procesu wykoń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 obrębie wywołania EndSubscription().

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

FlushUpdate

WEAVE_ERROR FlushUpdate()

Informuje, że aplikacja zakończyła mutację wszystkich obiektów TraitUpdatableDataSink.

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

Szczegóły
Parametry
[in] aForce
Jeśli ma wartość true (prawda), aktualizacja zostanie wysłana natychmiast, nawet jeśli ponowna próba została zaplanowana w przyszłości. Ten parametr jest domyślnie uważany za fałszywy.
Zwroty
W przypadku powodzenia: WEAVE_NO_ERROR; w przypadku niepowodzenia inne kody WEAVE_ERROR.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

bezpłatnie

void Free(
  void
)

Zwolnij obiekt SubscriptionClient.

Zwalnianie obiektu SubscriptionClient.

W razie potrzeby wywołuje AbortSubscription() i zwalnia refcount dla tego obiektu SubscriptionClient. Przy odpowiednim użyciu obiekt powinien zostać zwrócony do puli obiektów

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

Aplikacja jest odpowiedzialna za wywoływanie funkcji Free() dokładnie raz w czasie życia obiektu SubscriptionClient. Po wywołaniu funkcji Free() nie należy już stosować do niego odwołań.

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 (w przeciwieństwie do prenumeratora licznika) i wywołaj 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 zostać wywołana po zmodyfikowaniu katalogu TraitDataSink.

ResetResubscribe

void ResetResubscribe(
  void
)

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

Powiadamia SubscriptionClient, że ma przestać ponawiać próby aktualizacji.

Zezwala aplikacji na zawieszanie aktualizacji na pewien czas bez odrzucania wszystkich metadanych. Aktualizacje i ponawianie prób zostaną wznowione po wywołaniu FlushUpdate. Zdarzenie wywoływane w celu zawieszenia aktualizacji podczas trwania aktualizacji nie jest anulowane, ale w przypadku niepowodzenia nie jest ponawiane aż do ponownego wywołania FlushUpdate.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)