nl:: بافت:: پروفایل ها:: DataManagement_Current:: اشتراک مشتری

خلاصه

انواع عمومی

@130 enum
EventCallback )(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
پاسخ به تماس برای انتقال رویدادهای اشتراک به برنامه.
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(*
پاسخ به تماس برای واکشی فاصله زمانی برای انتظار قبل از اشتراک مجدد بعدی.

توابع استاتیک عمومی

DefaultEventHandler ( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback (void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
اجرای خط‌مشی پیش‌فرض، یک بارگاه تصادفی با وضوح میلی‌ثانیه در پنجره‌ای رو به افزایش، به دنبال دنباله فیبوناچی تا WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX انتخاب می‌کند.

توابع عمومی

AbortSubscription (void)
void
اشتراک را لغو کنید.
ClearUpdated ( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe (void)
void
مکانیسم اشتراک مجدد را غیرفعال کنید.
DiscardUpdates ()
void
به SubscriptionClient می‌گوید که مجموعه TraitPath‌های در انتظار به‌روزرسانی را خالی کند و درخواست به‌روزرسانی را که در حال انجام است، در صورت وجود لغو کند.
EnableResubscribe ( ResubscribePolicyCallback aCallback)
void
اشتراک مجدد خودکار را فعال کنید.
EndSubscription (void)
پایان اشتراک
FlushUpdate ()
نشان می دهد که برنامه جهش تمام TraitUpdatableDataSinks را به پایان رسانده است.
FlushUpdate (bool aForce)
Free (void)
void
این شیء 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
SubscriptionClient را به عنوان آغازگر پیکربندی کنید (در مقابل یک ضد مشترک) و در صورت عدم وجود اشتراک، اشتراک را بالا ببرید.
IsCanceling () const
bool
IsEstablished ()
bool
IsEstablishedIdle ()
bool
IsFree ()
bool
IsInProgressOrEstablished ()
bool
IsInResubscribeHoldoff ()
bool
IsRetryEnabled ()
bool
IsTerminated ()
bool
IsUpdatePendingOrInProgress ()
bool
LockUpdateMutex (void)
void
OnCatalogChanged ()
void
این روش باید زمانی فراخوانی شود که کاتالوگ TraitDataSink اصلاح شده باشد.
ResetResubscribe (void)
void
به مکانیسم اشتراک مجدد ضربه بزنید.
SetLivenessTimeoutMsec (uint32_t val)
void
SetUpdated ( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries ()
void
به SubscriptionClient می‌گوید تلاش مجدد درخواست‌های به‌روزرسانی را متوقف کند.
UnlockUpdateMutex (void)
void

سازه ها

nl:: Weave:: پروفایل ها:: DataManagement_Current:: SubscriptionClient:: LastObservedEvent
nl:: بافت:: پروفایل ها:: DataManagement_Current:: SubscriptionClient:: ResubscribeParam

اتحادیه ها

nl:: Weave:: پروفایل ها:: DataManagement_Current:: SubscriptionClient:: InEventParam
nl:: بافت:: پروفایل ها:: DataManagement_Current:: SubscriptionClient:: OutEventParam

انواع عمومی

@130

 @130

رویداد Callback

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

پاسخ به تماس برای انتقال رویدادهای اشتراک به برنامه.

جزئیات
مولفه های
[in] aAppState
نشانگر وضعیت برنامه در هنگام شروع اولیه SubscriptionClient تنظیم شد.
[in] aEvent
نشان می دهد که کدام رویداد در حال وقوع است
[in] aInParam
ساختار با جزئیات بیشتر در مورد رویداد
[out] aOutParam
اطلاعات ارسال شده توسط برنامه

شناسه رویداد

 EventID
خواص
kEvent_OnEventStreamReceived

زمانی ایجاد می شود که SubscriptionEngine با یک جریان رویداد در پیام NotificationRequest مواجه شود.

برنامه ممکن است EndSubscription() , AbortSubscription() یا Free() را در این مرحله فراخوانی کند.

kEvent_OnExchangeStart

پس از آماده شدن صحافی و راه اندازی ExchangeContext اما قبل از ارسال هر پیامی ایجاد می شود.

این آخرین فرصت برای یک برنامه برای تنظیم تنظیمات ExchangeContext است، mEC معتبر است و می‌توان آن را برای تنظیمات زمان‌بندی تنظیم کرد. برنامه نباید فیلدهای دیگر در کلاینت را لمس کند و نباید ExchangeContext را ببندد.

kEvent_OnNoMorePendingUpdates

رویدادی که نشان می‌دهد تمام مسیرهای مجموعه به‌روزرسانی توسط همتا پردازش شده است و هیچ مسیر دیگری نیازی به به‌روزرسانی ندارد.

kEvent_OnNotificationProcessed

زمانی ایجاد می شود که SubscriptionEngine انجام پیام NotificationRequest را به پایان برساند.

برنامه ممکن است EndSubscription() , AbortSubscription() یا Free() را در این مرحله فراخوانی کند.

kEvent_OnNotificationRequest

بر اساس دریافت درخواست Notification Request ایجاد شد.

برنامه ممکن است EndSubscription() , AbortSubscription() یا Free() را در این مرحله فراخوانی کند.

kEvent_OnSubscribeRequestPrepareNeeded

زمانی که موتور برای ارسال SubscribeRequest آماده شد، ارسال شد.

انتظار می رود برنامه مسیرهایی را که می خواهد در آنها مشترک شود پر کند.

kEvent_OnSubscriptionActivity

رویدادی که فعالیت اشتراک را نشان می دهد.

هر زمان که مشتری نشانه ای در مورد فعالیت اشتراک دریافت کند، ایجاد می شود. این شامل ایجاد موفقیت آمیز اشتراک، دریافت یک درخواست اطلاع رسانی یا دریافت گزارش وضعیت در پاسخ به پیام SubscribeConfirm است.

kEvent_OnSubscriptionEstablished

پس از ایجاد موفقیت آمیز اشتراک ایجاد شد.

برنامه ممکن است EndSubscription() , AbortSubscription() یا Free() را در این مرحله فراخوانی کند.

kEvent_OnSubscriptionTerminated

پایان این اشتراک را نشان می دهد.

پارامترهای ارسال شده به nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback نشان می دهد که آیا اشتراک مجدد به صورت خودکار انجام می شود یا خیر.

در طول تماس کنترل کننده رویداد، وضعیت مشتری Terminated می یابد. اگر سعی مجدد انجام نشود، با بازگشت کنترل کننده رویداد، وضعیت کلاینت به Initialized تغییر خواهد کرد. در غیر این صورت، ایالت به ResubscribeHoldoff منتقل می‌شود و تلاش می‌شود پس از زمان توقف، اشتراک دوباره برقرار شود.

برنامه ممکن است در این حالت AbortSubscription() یا Free() را فراخوانی کند.

پارامترهای ارسال شده شامل یک کد خطا نیز می شود که دلیل پایان اشتراک را نشان می دهد.

اشتراک ممکن است به دلایلی خاتمه یافته باشد (WRM ACK وجود ندارد، عدم تخصیص ExchangeContext ، مهلت زمانی پاسخ،...) برخی از کدهای خطای احتمالی ایجاد شده توسط مشتری:

کد خطا معنی
WEAVE_ERROR_INVALID_MESSAGE_TYPE یک پیام ناشناس دریافت می شود.
WEAVE_ERROR_TIMEOUT اکی دریافت نشد یا چک زنده بودن ناموفق بود.
WEAVE_ERROR_INCORRECT_STATE پیام ها در حالت غیرمنتظره ای دریافت می شوند.
WEAVE_ERROR_STATUS_REPORT_RECEIVED گزارش وضعیت دریافت می شود.
WEAVE_ERROR_INVALID_ARGUMENT فیلدهای درخواست اشتراک نامعتبر است.

kEvent_OnUpdateComplete

رویدادی که نشان‌دهنده تکمیل به‌روزرسانی است.

پارامترهای رویداد نشان می دهد که آیا به روز رسانی یک مسیر مشخصه با موفقیت یا شکست مواجه شده است.

ResubscribePolicyCallback

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

پاسخ به تماس برای واکشی فاصله زمانی برای انتظار قبل از اشتراک مجدد بعدی.

اگر برنامه‌ها تصمیم به انصراف از اشتراک مجدد داشته باشند، مجاز به لغو/رایگان شدن در این عملکرد هستند.

جزئیات
مولفه های
[in] aAppState
نشانگر وضعیت برنامه در هنگام شروع اولیه SubscriptionClient تنظیم شد.
[in] aInParam
ساختار با جزئیات بیشتر در مورد تلاش مجدد
[out] aOutIntervalMsec
زمان انتظار بر حسب میلی ثانیه قبل از تلاش مجدد بعدی

توابع استاتیک عمومی

DefaultEventHandler

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

DefaultResubscribePolicyCallback

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

اجرای خط‌مشی پیش‌فرض، یک بارگاه تصادفی با وضوح میلی‌ثانیه در پنجره‌ای رو به افزایش، به دنبال دنباله فیبوناچی تا WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX انتخاب می‌کند.

میانگین زمان انتظار تصادفی پس از WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX حدود یک ساعت خواهد بود. هنگامی که تعداد تلاش مجدد به 0 بازنشانی می شود، توالی دوباره از ابتدا شروع می شود.

توابع عمومی

لغو اشتراک

void AbortSubscription(
  void
)

اشتراک را لغو کنید.

لغو اشتراک مشتری

فوراً پذیرش تمام ترافیک مرتبط با اشتراک را متوقف کنید و همه منابع ارتباطی زیربنایی را آزاد کنید. خود شیء SubscriptionClient معتبر باقی می ماند و ممکن است دوباره استفاده شود.

پایان مشتری یک اشتراک را بدون اطلاع ناشر اشتراک و بدون ارائه رویداد OnSubscriptionTerminated به کنترل کننده رویداد برنامه خاتمه می دهد. در صورت وجود اشتراک متقابل، اشتراک پیشخوان نیز خاتمه می یابد.

با فراخوانی AbortSubscription() ، شیء SubscriptionClient وارد حالت Terminated می شود. پس از اتمام فرآیند پایان، شی وارد حالت Initialized می شود. هر دو انتقال به طور همزمان در فراخوانی AbortSubscription() اتفاق می‌افتند.

پس از بازگشت AbortSubscription() ، شیء SubscriptionClient ممکن است برای شروع اشتراک دیگری استفاده شود، یا ممکن است با فراخوانی متد Free() آزاد شود.

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

غیرفعال کردن اشتراک مجدد

void DisableResubscribe(
  void
)

مکانیسم اشتراک مجدد را غیرفعال کنید.

اگر در انتظار اشتراک مجدد بود، این کار لغو می‌شود.

حذف به روز رسانی ها

void DiscardUpdates()

به SubscriptionClient می‌گوید که مجموعه TraitPath‌های در انتظار به‌روزرسانی را خالی کند و درخواست به‌روزرسانی را که در حال انجام است، در صورت وجود لغو کند.

این روش را می توان از هر تماس برگشتی فراخوانی کرد.

اشتراک مجدد را فعال کنید

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

اشتراک مجدد خودکار را فعال کنید.

برای مشخص کردن زمان تلاش مجدد بعدی در صورت شکست، یک تماس برگشتی ضمیمه کنید.

جزئیات
مولفه های
[in] aCallback
پاسخ به تماس اختیاری برای واکشی مقدار زمان انتظار قبل از تلاش مجدد پس از شکست. اگر NULL از یک خط مشی پیش فرض استفاده کنید.

پایان اشتراک

WEAVE_ERROR EndSubscription(
  void
)

پایان اشتراک

اشتراک مشتری را با آرامش تمام کنید.

هنگامی که گزینه WDM_ENABLE_SUBSCRIPTION_CANCEL زمان کامپایل فعال است، با ارسال درخواست لغو به همتا، اشتراک را به خوبی پایان دهید. منابع مرتبط با اشتراک در پاسخ از طرف همتا یا در زمان پایان آزاد می شوند. وقتی این گزینه غیرفعال است، تماس معادل AbortSubscription() است.

به‌راحتی پایان مشتری یک اشتراک را خاتمه می‌دهد. اگر پشتیبانی لغو اشتراک فعال باشد، یک پیام SubscribeCancelRequest به ناشر اشتراک ارسال می شود و سیستم قبل از پایان اشتراک منتظر پاسخ است. در غیر این صورت اشتراک فوراً به روشی مشابه AbortSubscription() خاتمه می یابد. در صورت وجود اشتراک متقابل، اشتراک پیشخوان نیز خاتمه می یابد.

در حالی که منتظر پاسخ به SubscribeCancelRequest هستید، SubscriptionClient وارد حالت Canceling می شود.

هنگامی که فرآیند خاتمه شروع می شود، شی SubscriptionClient وارد حالت Terminated می شود و یک رویداد OnSubscriptionTerminated به کنترل کننده رویداد برنامه تحویل داده می شود. توجه داشته باشید که اگر پشتیبانی لغو فعال نباشد ، ممکن است کنترل کننده رویداد به طور همزمان در فراخوانی EndSubscription() فراخوانی شود.

پس از بازگشت کنترل کننده رویداد برنامه، شی SubscriptionClient وارد حالت Initialized می شود. در این مرحله ممکن است از شی SubscriptionClient برای شروع اشتراک دیگری استفاده شود، یا ممکن است با فراخوانی متد Free() آزاد شود.

FlushUpdate

WEAVE_ERROR FlushUpdate()

نشان می دهد که برنامه جهش تمام TraitUpdatableDataSinks را به پایان رسانده است.

مگر اینکه مبادله به‌روزرسانی قبلی در حال انجام باشد، مشتری تمام داده‌هایی را که به‌عنوان به‌روزرسانی علامت‌گذاری شده‌اند، می‌گیرد و در یک درخواست به‌روزرسانی برای پاسخ‌دهنده ارسال می‌کند. این روش را می توان از هر رشته ای فراخوانی کرد.

جزئیات
مولفه های
[in] aForce
اگر درست باشد، باعث می‌شود که به‌روزرسانی بلافاصله ارسال شود، حتی اگر برای امتحان مجدد در آینده برنامه‌ریزی شده باشد. این پارامتر به طور پیش فرض نادرست در نظر گرفته می شود.
برمی گرداند
WEAVE_NO_ERROR در صورت موفقیت؛ سایر کدهای WEAVE_ERROR در صورت خرابی.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

رایگان

void Free(
  void
)

این شیء SubscriptionClient را آزاد کنید.

یک شیء SubscriptionClient را آزاد کنید.

در صورت لزوم AbortSubscription() را فراخوانی می کند و refcount را در این شیء SubscriptionClient آزاد می کند. در صورت استفاده صحیح، این باید امکان برگرداندن شی را به مخزن آبجکت فراهم کند

شی SubscriptionClient را آزاد می کند. اگر اشتراکی فعال یا در حال انجام باشد، اشتراک فوراً به روشی مشابه فراخوانی AbortSubscription() خاتمه می یابد. اگر هر گونه درخواست به روز رسانی در حال انجام باشد، به طور مشابه لغو می شود.

این برنامه مسئول فراخوانی Free() دقیقاً یک بار در طول عمر یک شیء SubscriptionClient است. پس از فراخوانی ()Free ، هیچ ارجاع دیگری به شی نباید داده شود.

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
)

شروع اشتراک

void InitiateSubscription(
  void
)

SubscriptionClient را به عنوان آغازگر پیکربندی کنید (در مقابل یک ضد مشترک) و در صورت عدم وجود اشتراک، اشتراک را بالا ببرید.

در حال لغو است

bool IsCanceling() const 

ایجاد شده است

bool IsEstablished()

IsEstablishedIdle

bool IsEstablishedIdle()

رایگان است

bool IsFree()

IsInProgressOrEstablished

bool IsInProgressOrEstablished()

IsInResubscribeHoldoff

bool IsInResubscribeHoldoff()

IsRetryEnabled

bool IsRetryEnabled()

خاتمه یافته است

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdateMutex

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

این روش باید زمانی فراخوانی شود که کاتالوگ TraitDataSink اصلاح شده باشد.

ResetResubscribe

void ResetResubscribe(
  void
)

به مکانیسم اشتراک مجدد ضربه بزنید.

این یک امتحان مجدد فوری را آغاز می کند

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

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

SuspendUpdateRetries

void SuspendUpdateRetries()

به SubscriptionClient می‌گوید تلاش مجدد درخواست‌های به‌روزرسانی را متوقف کند.

به برنامه اجازه می‌دهد تا به‌روزرسانی‌ها را برای مدتی بدون حذف همه ابرداده‌ها متوقف کند. با فراخوانی FlushUpdate، به‌روزرسانی‌ها و تلاش‌های مجدد از سر گرفته می‌شوند. هنگامی که برای تعلیق به‌روزرسانی‌ها در حین پرواز فراخوانی می‌شود، به‌روزرسانی لغو نمی‌شود، اما در صورت عدم موفقیت، تا زمانی که FlushUpdate دوباره فراخوانی نشود، دوباره امتحان نمی‌شود.

UnlockUpdateMutex را باز کنید

void UnlockUpdateMutex(
  void
)