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 pozwalające przekazać zdarzenia subskrypcji do aplikacji. |
EventID{
|
enum | typ wyliczeniowy |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
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
|
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 (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:: |
|
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 umożliwiające przekazywanie zdarzeń subskrypcji do aplikacji.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
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 |
||||||||||||
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 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:
|
||||||||||||
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 |
|
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 |
|
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 |
|
||
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 )