nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Podsumowanie
Typy publiczne |
|
---|---|
@130
|
enum | typ wyliczeniowy |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Wywołanie zwrotne w celu przekazania zdarzeń subskrypcji do aplikacji. |
EventID{
|
enum | typ wyliczeniowy |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
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
|
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
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:: |
|
nl:: |
Związki |
|
---|---|
nl:: |
|
nl:: |
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 |
|
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 |
||||||||||||
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ść 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:
|
||||||||||||
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 |
|
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 |
|
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 |
|
||
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 )