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 aktarmak için geri arama.
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ı, sürekli artan bir aralıkta milisaniyelik çözünürlüklü rastgele bir zaman dilimi seçer. Bu zaman dilimi, WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX. adıma kadar bir fibonacci sırasını takip eder.

Herkese açık işlevler

AbortSubscription(void)
void
Aboneliği iptal et.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Yeniden abone olma mekanizmasını devre dışı bırakın.
DiscardUpdates()
void
SubscriptionClient öğesine güncellenmeyi bekleyen TraitPath'ler grubunu boşaltmasını ve devam eden güncelleme isteğini (varsa) iptal etmesini söyler.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Otomatik yeniden abone olma özelliğini etkinleştir.
EndSubscription(void)
Aboneliği sonlandırın.
FlushUpdate()
Uygulamanın tüm TraitUpdatableDataSinks dönüşümlerini tamamladığını gösteren sinyaller.
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 öğesini bir başlatıcı olarak yapılandırın (karşı abone değil) ve değilse aboneliği başlatı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ı başlatın.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
SubscriptionClient, güncelleme isteklerini yeniden denemeyi durdurmasını bildirir.
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 aktarmak için geri arama.

Ayrıntılar
Parametreler
[in] aAppState
SubscriptionClient ilk kullanıma hazırlanı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ında bir etkinlik akışı saydığında oluşturulur.

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free()'yi çağırabilir.

kEvent_OnExchangeStart

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

Bu, bir uygulamanın ExchangeContext ayarlarını düzenlemesi için son şanstır. mEC geçerlidir ve zaman aşımı ayarları için ayarlanabilir. 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 başka yolların güncellenmesine gerek olmadığını belirten bir etkinlik.

kEvent_OnNotificationProcessed

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

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free()'yi çağırabilir.

kEvent_OnNotificationRequest

Bildirim İsteği alındığında oluşturulur.

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free()'yi çağırabilir.

kEvent_OnSubscribeRequestPrepareNeeded

Motor, Abone Olma İsteği'ni 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 bu kod oluşturulur. Buna abonelik kurulumunun başarılı olması, Bildirim İsteği'nin alınması veya SubscriptionConfirm iletisine yanıt olarak bir durum raporunun alınması dahildir.

kEvent_OnSubscriptionEstablished

Aboneliğin başarıyla kurulmasının ardından oluşturulur.

Uygulama bu noktada EndSubscription(), AbortSubscription() veya Free()'yi çağırabilir.

kEvent_OnSubscriptionTerminated

Bu aboneliğin sonunu işaretler.

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback'e gönderilen parametreler otomatik olarak yeniden abone olma girişiminde bulunulup bulunulmayacağını gösterir.

Etkinlik işleyici çağrısı sırasında istemcinin durumu Terminated olur. Herhangi bir yeniden deneme yapılmazsa etkinlik işleyici geri döndüğünde istemcinin durumu Initialized olarak değişir. Aksi takdirde, durum ResubscribeHoldoff olarak değişir ve bekleme süresi sona erdikten sonra aboneliği yeniden kurmak için girişimde bulunulur.

Uygulama bu durumda AbortSubscription() veya Free()'yi çağırabilir.

Gönderilen parametrelerde, aboneliğin sona erdirme nedenini belirten bir hata kodu da yer alır.

Abonelik çeşitli nedenlerden dolayı (WRM ACK'nın eksik olması, ExchangeContext ayırma hatası, yanıt zaman aşımı vb.) sonlandırılmış olabilir İstemci tarafından oluşturulan 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 denetimi başarısız oldu.
WEAVE_ERROR_INCORRECT_STATE İletiler beklenmedik bir durumda alınıyor.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Bir durum raporu alınır.
WEAVE_ERROR_INVALID_ARGUMENT Abonelik isteği alanları geçersiz.

kEvent_OnUpdateComplete

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

Etkinlik parametreleri, belirli bir özellik yolunun güncellemesinin 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.

Uygulamaların yeniden abone olmaktan vazgeçmeye karar vermiş olması durumunda bu işlevde uygulamayı iptal etmesine/iptal etmesine izin verilir.

Ayrıntılar
Parametreler
[in] aAppState
SubscriptionClient ilk kullanıma hazırlanırken ayarlanan uygulama durumu işaretçisi.
[in] aInParam
Yeniden denemeyle ilgili ek ayrıntılar içeren yapı
[out] aOutIntervalMsec
Bir sonraki yeniden denemeden önce beklenecek süre (milisaniye cinsinden)

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ı, sürekli artan bir aralıkta milisaniyelik çözünürlüklü rastgele bir zaman dilimi seçer ve WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX, en fazla bir fibonacci dizisini takip eder.

WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX sonrasında yapılan rastgele bekleme süresinin ortalaması yaklaşık bir saat olur. Yeniden deneme sayısı 0'a sıfırlandığında adım sırası en baştan başlar.

Herkese açık işlevler

AbortSubscription

void AbortSubscription(
  void
)

Aboneliği iptal et.

İstemci aboneliğini iptal etme

Abonelikle ilişkili tüm trafiği kabul etmeyi derhal durdurun ve temel alınan tüm iletişim kaynaklarını serbest bırakın. SubscriptionClient nesnesinin kendisi geçerli kalır ve tekrar kullanılabilir.

Abonelik yayıncısını bilgilendirmeden ve uygulamanın etkinlik işleyicisine bir OnSubscriptionTerminated etkinliği iletmeden aboneliğin istemci sonunu sonlandırır. Karşılıklı abonelik varsa karşı abonelik de sonlandırılır.

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

AbortSubscription() geri döndükten sonra, SubscriptionClient nesnesi başka bir abonelik başlatmak için kullanılabilir veya Free() yöntemi çağrılarak 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.

Beklemede olan bir yeniden abone olma işlemi varsa bu işlem iptal edilir.

DiscardUpdates

void DiscardUpdates()

SubscriptionClient öğesine güncellenmeyi bekleyen TraitPath'ler grubunu boşaltmasını ve devam eden güncelleme isteğini (varsa) iptal etmesini söyler.

Bu yöntem herhangi bir geri çağırma kullanılarak çağrılabilir.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

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

Hata durumunda bir sonraki yeniden deneme zamanını belirtmek için geri çağırma ekleyin.

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

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Aboneliği sonlandırın.

İstemci aboneliğini sorunsuz bir şekilde sonlandırın.

WDM_ENABLE_SUBSCRIPTION_CANCEL derleme zamanı seçeneği etkinleştirildiğinde, eşe İptal İsteği göndererek aboneliği sorunsuz bir ş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() işlevine eşdeğer olur.

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

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

Sonlandırma işlemi başladıktan sonra, SubscriptionClient nesnesi Terminated durumuna girer ve uygulamanın etkinlik işleyicisine bir OnSubscriptionTerminated etkinliği teslim edilir. İptal desteği etkinleştirilmemişse etkinlik işleyicinin, EndSubscription() çağrısında eşzamanlı olarak çağrılabileceğini unutmayın.

Uygulamanın etkinlik işleyicisi geri döndüğünde, SubscriptionClient nesnesi Initialized durumuna girer. Bu noktada SubscriptionClient nesnesi, başka bir abonelik başlatmak için kullanılabilir veya Free() yöntemi çağrılarak serbest bırakılabilir.

FlushUpdate

WEAVE_ERROR FlushUpdate()

Uygulamanın tüm TraitUpdatableDataSinks dönüşümlerini tamamladığını gösteren sinyaller.

Önceki bir güncelleme değişimi devam etmiyorsa 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
Değer true ise, gelecekte 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ı olursa WEAVE_NO_ERROR; diğer WEAVE_ERROR kodlarını kullanın.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Ücretsiz

void Free(
  void
)

Bu SubscriptionClient nesnesini serbest bırakın.

Bir SubscriptionClient nesnesini yer açın.

Gerekirse AbortSubscription() çağrısını yapar ve bu SubscriptionClient nesnesindeki refcount'u serbest bırakır. Doğru kullanım altında bu, nesnenin nesne havuzuna döndürülmesini sağlamalıdır

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

Uygulama, bir SubscriptionClient nesnesinin ömrü boyunca Free()'yi 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 öğesini bir başlatıcı olarak yapılandırın (karşı abone değil) ve değilse aboneliği başlatı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ı başlatın.

Bu işlem anında yeniden deneme başlatır

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

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

SuspendUpdateRetries

void SuspendUpdateRetries()

SubscriptionClient, güncelleme isteklerini yeniden denemeyi durdurmasını bildirir.

Uygulamaya, tüm meta verileri silmeden güncellemeleri bir süreliğine askıya alma izni verir. FlushUpdate çağrıldığında güncellemeler ve yeniden denemeler devam ettirilir. Bir güncelleme yayındayken güncellemelerin askıya alınması için çağrıldığında, güncelleme iptal edilmez ancak başarısız olursa FlushUpdate tekrar çağrılana kadar yeniden denenmez.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)