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

Özet

Herkese açık türler

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Abonelik etkinliklerini uygulamaya geçirmek için geri çağırma.
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) typedef
void(*
Bir sonraki yeniden abone olma işleminden önce beklenecek zaman aralığını getirmek için geri çağırma.

Herkese açık statik işlevler

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
Varsayılan politika uygulaması, WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEXe kadar bir fibonacci dizisinden sonra, sürekli artan bir zaman aralığı yerine milisaniyelik çözünürlüğe sahip rastgele bir zaman dilimi seçer.

Kamu işlevleri

AbortSubscription(void)
void
Aboneliği iptal etme.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Yeniden abone olma mekanizmasını devre dışı bırakın.
DiscardUpdates()
void
SubscriptionClient hizmetine, güncellenmeyi bekleyen TraitPath grubunu boşaltmasını ve varsa devam eden güncelleme isteğini iptal etmesini bildirir.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Otomatik yeniden abone olma özelliğini etkinleştirin.
EndSubscription(void)
Aboneliği sonlandırın.
FlushUpdate()
Uygulamanın tüm TraitUpdatableDataSink'leri değiştirmeyi tamamladığını gösterir.
FlushUpdate(bool aForce)
Free(void)
void
Bu SubscriptionClient nesnesini serbest bırakın.
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
SubscriptionClient değerini başlatıcı olarak yapılandırın (karşı abonenin aksine) ve değilse aboneliği öne çıkarın.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
Bu yöntem, TraitDataSink kataloğu değiştirildiğinde çağrılmalıdır.
ResetResubscribe(void)
void
Yeniden abone olma mekanizmasını devre dışı bırakın.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
SubscriptionClient hizmetine, güncelleme isteklerini yeniden deneme işlemini durdurmasını söyler.
UnlockUpdateMutex(void)
void

Yapılar

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

Birlikler

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

Herkese açık türler

@130

 @130

EventCallback

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

Abonelik etkinliklerini uygulamaya geçirmek için geri çağırma.

Ayrıntılar
Parametreler
[in] aAppState
SubscriptionClient başlatılırken ayarlanan uygulama durumu işaretçisi.
[in] aEvent
Hangi etkinliğin gerçekleştiğini gösterir
[in] aInParam
Etkinlikle ilgili ek ayrıntılar içeren yapı
[out] aOutParam
Uygulama tarafından geri verilen bilgiler

EventID

 EventID
Özellikler
kEvent_OnEventStreamReceived

SubscriptionEngine, NotificationRequest mesajı içinde bir etkinlik akışı saydığında oluşturulur.

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free() çağrısını yapabilir.

kEvent_OnExchangeStart

Bağlama hazırlandıktan ve ExchangeContext ayarlandıktan sonra, ancak herhangi bir ileti gönderilmeden önce oluşturulur.

Bu, bir uygulamanın ExchangeContext ayarlarını düzenlemek için son şanstır. mEC geçerlidir ve zaman aşımı ayarları için incelenebilir. Uygulama, istemcideki diğer alanlara dokunmamalı ve ExchangeContext'i kapatmamalıdır.

kEvent_OnNoMorePendingUpdates

Güncelleme kümesindeki tüm yolların eş tarafından işlendiğini ve daha fazla yolun güncellenmesine gerek olmadığını belirten bir etkinlik.

kEvent_OnNotificationProcessed

SubscriptionEngine bir NotificationRequest mesajını işlemeyi bitirdiğinde oluşturulur.

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free() çağrısını yapabilir.

kEvent_OnNotificationRequest

Bir NotificationRequest'in alımında oluşturulur.

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free() çağrısını yapabilir.

kEvent_OnSubscribeRequestPrepareNeeded

Motor, Abone İsteği göndermeye hazır olduğunda gönderilir.

Uygulamanın abone olmak istediği yolları doldurması beklenir.

kEvent_OnSubscriptionActivity

Abonelik etkinliğini gösteren bir etkinlik.

Müşteri, abonelik etkinliğiyle ilgili bir bildirim aldığında oluşturulur; bu bildirime abonelik işleminin başarılı şekilde kurulması, NotificationRequest'in alınması veya Abone Onayı mesajına yanıt olarak bir durum raporu alınması dahildir.

kEvent_OnSubscriptionEstablished

Aboneliğin başarılı bir şekilde oluşturulmasından sonra oluşturulur.

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free() çağrısını yapabilir.

kEvent_OnSubscriptionTerminated

Bu aboneliğin sonunu belirtir.

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback öğesine gönderilen parametreler, otomatik olarak yeniden abone olmayı deneyip denemeyeceğinizi belirtir.

Etkinlik işleyici çağrısı sırasında istemcinin durumu Terminated olur. Hiçbir yeniden deneme yapılmayacaksa etkinlik işleyici geri döndüğünde istemcinin durumu Initialized'e geçer. Aksi takdirde durum ResubscribeHoldoff olarak değiştirilir ve bekletme süresinden sonra aboneliğin yeniden oluşturulması için işlem yapılır.

Uygulama, bu durumda AbortSubscription() veya Free() çağrısı yapabilir.

Gönderilen parametrelerde, aboneliğin sonlandırılma nedenini belirten bir hata kodu da bulunur.

Abonelik çeşitli nedenlerle feshedilmiş olabilir (WRM ACK eksik, ExchangeContext ayırma hatası, yanıt zaman aşımı,...) İstemci tarafından oluşturulmuş bazı olası hata kodları:

Hata kodu Anlamı
WEAVE_ERROR_INVALID_MESSAGE_TYPE Tanınmayan bir mesaj alındı.
WEAVE_ERROR_TIMEOUT Onay alınmadı veya yayın kontrolü başarısız oldu.
WEAVE_ERROR_INCORRECT_STATE İletiler beklenmeyen bir durumda alınır.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Bir durum raporu alınır.
WEAVE_ERROR_INVALID_ARGUMENT Abone olma isteği alanları geçersiz.

kEvent_OnUpdateComplete

Güncellemenin tamamlandığını belirten bir etkinlik.

Etkinlik parametreleri, belirli bir özellik yolunun güncellenmesinin başarılı veya başarısız olduğunu belirtir.

ResubscribePolicyCallback

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

Bir sonraki yeniden abone olma işleminden önce beklenecek zaman aralığını getirmek için geri çağırma.

Yeniden abone olmaktan vazgeçen uygulamalar bu işlevde işlemi iptal edebilir veya iptal edebilir.

Ayrıntılar
Parametreler
[in] aAppState
SubscriptionClient başlatılırken ayarlanan uygulama durumu işaretçisi.
[in] aInParam
Yeniden denemeyle ilgili ek ayrıntılar içeren yapı
[out] aOutIntervalMsec
Bir sonraki yeniden deneme için beklenecek milisaniye cinsinden süre

Herkese açık statik işlevler

DefaultEventHandler

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

DefaultResubscribePolicyCallback

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

Varsayılan politika uygulaması, WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEXe kadar bir fibonacci dizisinden sonra, sürekli artan bir zaman aralığı yerine milisaniyelik çözünürlüğe sahip rastgele bir zaman dilimi seçer.

WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX geçtikten sonra rastgele bekleme süresinin ortalaması yaklaşık bir saat olacak. Yeniden deneme sayısı 0'a sıfırlandığında dizi baştan başlar.

Kamu işlevleri

AbortSubscription

void AbortSubscription(
  void
)

Aboneliği iptal etme.

Bir müşteri aboneliğini iptal edebilir.

Abonelikle ilişkili tüm trafiği kabul etmeyi hemen durdurun ve temeldeki tüm iletişim kaynaklarını kullanıma sunun. SubscriptionClient nesnesinin kendisi geçerli olmaya devam eder ve tekrar kullanılabilir.

Abonelik yayıncısına bildirimde bulunmadan ve uygulamanın etkinlik işleyicisine bir OnSubscriptionTerminated etkinliği yayınlamadan, aboneliğin istemci sonunu sonlandırır. Karşılıklı abonelik varsa sayaç aboneliği de sonlandırılır.

AbortSubscription() çağrıldıktan sonra SubscriptionClient nesnesi Terminated durumuna girer. Fesih işlemi tamamlandığında nesne Initialized durumuna girer. Her iki geçiş de AbortSubscription() çağrısı içinde eşzamanlı olarak gerçekleşir.

AbortSubscription() döndürüldükten sonra SubscriptionClient nesnesi başka bir abonelik başlatmak için kullanılabilir veya Free() yönteminin çağırılmasıyla serbest bırakılabilir.

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

Yeniden abone olma mekanizmasını devre dışı bırakın.

Bekleyen bir yeniden abone olma durumu varsa işlem iptal edilir.

DiscardUpdates

void DiscardUpdates()

SubscriptionClient hizmetine, güncellenmeyi bekleyen TraitPath grubunu boşaltmasını ve varsa devam eden güncelleme isteğini iptal etmesini bildirir.

Bu yöntem, herhangi bir geri çağırma işlevinden çağrılabilir.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Otomatik yeniden abone olma özelliğini etkinleştirin.

Hata olması durumunda bir sonraki yeniden deneme zamanını belirtmek için bir geri arama ekleyin.

Ayrıntılar
Parametreler
[in] aCallback
Bir hatadan sonra yeniden denemeden önce beklenecek süreyi getirmek için isteğe bağlı geri arama. NULL ise varsayılan politika kullanın.

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Aboneliği sonlandırın.

Müşteri aboneliğini güzel bir şekilde sonlandırın.

WDM_ENABLE_SUBSCRIPTION_CANCEL derleme zamanı seçeneği etkinleştirildiğinde, eşe bir İptal İsteği göndererek aboneliği sorunsuz şekilde sonlandırın. Abonelikle ilişkili kaynaklar, eşten yanıt alındığında veya zaman aşımına uğradığında serbest bırakılır. Seçenek devre dışı bırakıldığında çağrı, AbortSubscription() ile eşdeğer olur.

Aboneliğin istemci sonunu düzgün bir şekilde fesheder. Abonelik iptali desteği etkinleştirilirse abonelik yayıncısına bir Abone İptal İsteği gönderilir ve sistem, aboneliği sonlandırmadan önce bir yanıt bekler. Aksi takdirde, abonelik AbortSubscription() işlevine benzer şekilde hemen sonlandırılır. Karşılıklı abonelik varsa sayaç aboneliği de sonlandırılır.

Abonelik İptal İsteği için yanıt beklerken SubscriptionClient, Canceling durumuna girer.

Fesih işlemi başladığında, SubscriptionClient nesnesi Terminated durumuna girer ve uygulamanın etkinlik işleyicisine bir OnSubscriptionTerminated etkinliği gönderilir. İptal desteği etkinleştirilmemişse etkinlik işleyicinin EndSubscription() çağrısı içinde eşzamanlı olarak çağrılabileceğini unutmayın.

Uygulamanın olay işleyicisi döndürüldükten sonra SubscriptionClient nesnesi, Initialized durumuna girer. Bu noktada SubscriptionClient nesnesi başka bir abonelik başlatmak için kullanılabilir veya Free() yönteminin çağırılmasıyla serbest bırakılabilir.

FlushUpdate

WEAVE_ERROR FlushUpdate()

Uygulamanın tüm TraitUpdatableDataSink'leri değiştirmeyi tamamladığını gösterir.

Önceki bir güncelleme değişimi devam etmediği sürece, istemci güncellenmiş olarak işaretlenen tüm verileri alır ve tek bir güncelleme isteğinde yanıt verene gönderir. Bu yöntem herhangi bir iş parçacığından çağrılabilir.

Ayrıntılar
Parametreler
[in] aForce
True (doğru) değerine ayarlanırsa, ileride bir yeniden deneme planlanmış olsa bile güncellemenin hemen gönderilmesine neden olur. Bu parametre, varsayılan olarak yanlış kabul edilir.
İadeler
Başarılı olunması halinde WEAVE_NO_ERROR; hata durumunda diğer WEAVE_ERROR kodları.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Ücretsiz

void Free(
  void
)

Bu SubscriptionClient nesnesini serbest bırakın.

Bir SubscriptionClient nesnesini serbest bırakın.

Gerekirse AbortSubscription() çağrısı yapar ve bu SubscriptionClient nesnesindeki referansı serbest bırakır. Doğru kullanım kapsamında bu, nesnenin nesne havuzuna döndürülebilmesini sağlamalıdır.

SubscriptionClient nesnesini serbest bırakır. Bir abonelik etkin durumdaysa veya devam ediyorsa abonelik, AbortSubscription() çağrısına benzer şekilde hemen sonlandırılır. Devam eden bir güncelleme isteği varsa da benzer şekilde iptal edilir.

Uygulama, bir SubscriptionClient nesnesinin kullanım süresi boyunca Free() işlevini tam olarak bir kez çağırmaktan sorumludur. Free() çağrıldıktan sonra, nesneye başka referans yapılmamalıdır.

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
)

SubscriptionClient değerini başlatıcı olarak yapılandırın (karşı abonenin aksine) ve değilse aboneliği öne çıkarın.

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

Bu yöntem, TraitDataSink kataloğu değiştirildiğinde çağrılmalıdır.

ResetResubscribe

void ResetResubscribe(
  void
)

Yeniden abone olma mekanizmasını devre dışı bırakın.

Bu işlem hemen bir yeniden deneme işlemi başlatır

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

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

SuspendUpdateRetries

void SuspendUpdateRetries()

SubscriptionClient hizmetine, güncelleme isteklerini yeniden deneme işlemini durdurmasını söyler.

Uygulamanın tüm meta verileri silmeden bir süreliğine güncellemeleri askıya almasına izin verir. FlushUpdate çağrıldığında güncellemeler ve yeniden denemeler devam ettirilir. Devam eden bir güncelleme varken güncellemeleri askıya almak amacıyla çağrıldığında, güncelleme iptal edilmez ancak başarısız olursa FlushUpdate yeniden çağrılana kadar yeniden denenmez.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)