nl::Weave::الملفات الشخصية::DataManagement_Current::SubscriptionsClient

الملخّص

الأنواع المتاحة للجميع

@130 تعداد
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
}
تعداد
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
حرّر هذا العنصر SubscriptionsClient.
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
ضبط اشتراكClient كبادئ (بدلاً من المشترك المضاد) وإظهار الاشتراك إذا لم يكن كذلك.
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::Weave::الملفات الشخصية::DataManagement_Current::SubscriptionsClient::ResubscribeParam.

الاتحادات

nl::Weave::الملفات الشخصية::DataManagement_Current::SUBSCRIPTIONClient::InEventParam
nl::Weave::الملفات الشخصية::DataManagement_Current::SUBSCRIPTIONClient::OutEventParam

الأنواع المتاحة للجميع

@130

 @130

معاودة الاتصال بالحدث

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 ساحة مشاركات للأحداث ضمن رسالة MessageRequest.

قد يطلب التطبيق EndSubscriptions() أو AbortSubscriptions() أو Free() في هذه المرحلة.

kEvent_OnExchangeStart

يتم إنشاؤه بعد إعداد الربط وإعداد ExchangeContext ولكن قبل أي رسائل مُرسَلة.

هذه هي الفرصة الأخيرة لتطبيق ضبط إعدادات ExchangeContext، وتكون mEC صالحة ويمكن ضبطها لإعدادات المهلة. ويجب ألا يلمس التطبيق الحقول الأخرى في البرنامج ويجب ألا يغلق ExchangeContext.

kEvent_OnNoMorePendingUpdates

حدث يشير إلى أن جميع المسارات في مجموعة التعديلات قد تمت معالجتها بواسطة النظير، وليست هناك حاجة إلى تحديث المزيد من المسارات.

kEvent_OnNotificationProcessed

يتم إنشاؤه عندما ينهي SUBSCRIPTIONEngine متابعة رسالة MessageRequest.

قد يطلب التطبيق EndSubscriptions() أو AbortSubscriptions() أو Free() في هذه المرحلة.

kEvent_OnNotificationRequest

يتم إنشاؤها في إشعار طلب طلب.

قد يطلب التطبيق EndSubscriptions() أو AbortSubscriptions() أو Free() في هذه المرحلة.

kEvent_OnSubscribeRequestPrepareNeeded

يتم إرساله عندما يكون المحرك جاهزًا لإرسال SubscriptionRequest.

من المتوقع أن يملأ الطلب المسارات التي يريد الاشتراك فيها.

kEvent_OnSubscriptionActivity

حدث يشير إلى نشاط الاشتراك.

يتم إنشاؤه كلما تلقى العميل مؤشرًا على نشاط الاشتراك؛ ويشمل ذلك إنشاء اشتراك ناجح أو استقبال إشعار طلب أو إيصال لتقرير الحالة استجابةً لرسالة اشتراك التأكيد.

kEvent_OnSubscriptionEstablished

يتم إنشاؤه عند إجراء اشتراك بنجاح.

قد يطلب التطبيق EndSubscriptions() أو AbortSubscriptions() أو Free() في هذه المرحلة.

kEvent_OnSubscriptionTerminated

وضع علامة على نهاية هذا الاشتراك.

ستشير المعلمات التي يتم إرسالها إلى nl::Weave::Profiles::DataManagement_Current::SUBSCRIPTIONClient::EventCallback إلى ما إذا كانت ستتم إعادة الاشتراك تلقائيًا.

أثناء استدعاء معالج الأحداث، ستكون حالة العميل Terminated. إذا لم تتم محاولة إعادة المحاولة، ستنتقل حالة البرنامج إلى Initialized عند إرجاع معالج الحدث. بخلاف ذلك، سيتم نقل الحالة إلى ResubscribeHoldoff وستتم محاولة إعادة إنشاء الاشتراك بعد فترة الانتظار.

قد يطلب التطبيق AbortSubscriptions() أو Free() في هذه الحالة.

ستتضمّن المعلّمات المرسلة أيضًا رمز خطأ يشير إلى سبب إنهاء الاشتراك.

ربما تم إنهاء الاشتراك لعدد من الأسباب (تعذّر WRM ACK، وتعذّر تخصيص ExchangeContext، ومهلة الاستجابة،...) بعض رموز الأخطاء المحتملة التي ينشئها البرنامج:

رمز الخطأ المعنى
WEAVE_ERROR_INVALID_MESSAGE_TYPE يتم استلام رسالة غير معروفة.
WEAVE_ERROR_TW لم يتم استلام ack أو يتعذّر التحقق من مدى الحياة.
WEAVE_ERROR_INCORRECT_الحالة يتم استلام الرسائل في حالة غير متوقعة.
WEAVE_ERROR_STATUS_REPORT_RECEIVED يتم تلقي تقرير الحالة.
WEAVE_ERROR_INVALID_{9/} حقول طلبات الاشتراك غير صالحة.

kEvent_OnUpdateComplete

حدث يشير إلى اكتمال التحديث.

وستشير معلّمات الأحداث إلى ما إذا كان تعديل مسار سمة معيّن قد تم بنجاح أو تعذّر تعديله.

إعادة الاشتراك في سياسة الاتصال

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

يمكنك معاودة الاتصال لجلب الفاصل الزمني للانتظار قبل إعادة الاشتراك التالية.

يُسمَح باستخدام التطبيقات بإلغاء العملية أو إلغاء صلاحيتها في هذه الوظيفة إذا قررت التوقّف عن إعادة الاشتراك.

التفاصيل
المعلَمات
[in] aAppState
تم ضبط مؤشر حالة التطبيق أثناء إعداد SUBSCRIPTIONClient.
[in] aInParam
البنية مع تفاصيل إضافية حول إعادة المحاولة
[out] aOutIntervalMsec
الوقت بالمللي ثانية للانتظار قبل إعادة المحاولة التالية

الدوال الثابتة العامة

مؤشر الحدث التلقائي

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

DefaultResubscribePolicyCallcall

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. يحدث كلا الانتقالين بشكل متزامن في الطلب إلى AbortSubscriptions().

بعد رجوع AbortSUBSCRIPTION()، قد يتم استخدام الكائن SubscriptionClient لبدء اشتراك آخر، أو يمكن تحريره باستدعاء الطريقة Free().

معلومات محدَّثة

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، يمكنك إنهاء الاشتراك بشكلٍ سلس من خلال إرسال إلغاء طلب إلى نظير. يتم تحرير الموارد المرتبطة بالاشتراك استجابةً من الأقران أو عند انتهاء المهلة. عند إيقاف الخيار، تكون المكالمة تساوي AbortSubscriptions().

يتم إنهاء نهاية الاشتراك بشكلٍ سلس للعميل. إذا تم تفعيل دعم إلغاء الاشتراك، يتم إرسال رسالة Createإلغاء الاشتراك إلى ناشر الاشتراك وينتظر النظام ردًا قبل إنهاء الاشتراك، وإلا سيتم إنهاء الاشتراك على الفور بالطريقة نفسها التي تم إيقافها بها AbortSubscriptions(). وفي حال توفّر اشتراك مشترك، يتم إنهاء الاشتراك المضاد أيضًا.

أثناء انتظار الرد على طلب إلغاء الاشتراك، يدخل SubscriptionClient في حالة Canceling.

بعد بدء عملية الإنهاء، يدخل الكائن SubscriptionClient في حالة Terminated ويتم تسليم حدث OnSubscriptionTerminated إلى معالج أحداث التطبيق. لاحظ أنه إذا لم يتم تفعيل دعم الإلغاء، قد يتم استدعاء معالج الحدث بشكلٍ متزامن ضمن الاستدعاء إلى EndSubscriptions().

بعد إرجاع معالج أحداث التطبيق، يدخل الكائن SubscriptionClient في حالة Initialized. عند هذه النقطة، يمكن استخدام الكائن SubscriptionClient لبدء اشتراك آخر، أو يمكن تحريره عن طريق استدعاء الطريقة Free().

تعديل Flush

WEAVE_ERROR FlushUpdate()

إشارات تدل على انتهاء التطبيق في تحويل جميع معاملات TraitUpdatableDataSinks.

ما لم يكن هناك عملية تحديث سابقة جارية، سيأخذ العميل جميع البيانات التي تم وضع علامة عليها كتحديث ويرسلها إلى المستجيب في طلب تحديث واحد. ويمكن استدعاء هذه الطريقة من أي سلسلة محادثات.

التفاصيل
المعلَمات
[in] aForce
إذا كانت القيمة true، تتسبب في إرسال التحديث فورًا حتى في حال تحديد موعد لإعادة المحاولة في المستقبل. ويتم اعتبار هذه المعلّمة خطأ بشكلٍ تلقائي.
المرتجعات
WEAVE_NO_ERROR في حالة النجاح؛ ورموز WEAVE_ERROR الأخرى في حالة الإخفاق.

تعديل Flush

WEAVE_ERROR FlushUpdate(
  bool aForce
)

مجاني

void Free(
  void
)

حرّر هذا العنصر SubscriptionsClient.

تحرير كائن SubscriptionClient

يستدعي AbortSubscriptions() إذا لزم الأمر ويؤدي إلى إعادة العدّ على عنصر subscriptionClient هذا. عند الاستخدام السليم، يجب أن يفعِّل هذا الإجراء الكائن ليتم إرجاعه إلى مجموعة الكائنات.

لتحرير الكائن SubscriptionClient. إذا كان الاشتراك مفعّلاً أو قيد التقدم، يتم إنهاء الاشتراك على الفور بطريقة مشابهة لطلب AbortSubscriptions(). وفي حال كان هناك طلبات تعديل قيد التقدّم، سيتم إلغاء الاشتراك بالمثل.

يكون التطبيق مسؤولاً عن استدعاء Free() مرة واحدة تحديدًا خلال فترة بقاء كائن SubscriptionClient. بعد استدعاء Free()، لن تتم إضافة أي مراجع أخرى إلى الكائن.

الحصول على تجميع البيانات

Binding * GetBinding(
  void
) const 

الحصول على مهلة

uint32_t GetLivenessTimeoutMsec(
  void
) const 

GetPeerNodeId

uint64_t GetPeerNodeId(
  void
) const 

رقم تعريف الاشتراك

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

الإشارة إلى النشاط

void IndicateActivity(
  void
)

بدء الاشتراك في الإشعار المضاد

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

بدء الاشتراك

void InitiateSubscription(
  void
)

ضبط اشتراكClient كبادئ (بدلاً من المشترك المضاد) وإظهار الاشتراك إذا لم يكن كذلك.

جارٍ الإلغاء

bool IsCanceling() const 

حالي

bool IsEstablished()

مُحدَّد

bool IsEstablishedIdle()

مجّاني

bool IsFree()

تم تنفيذه أو تم تنفيذه

bool IsInProgressOrEstablished()

IsInResubscribeHoff

bool IsInResubscribeHoldoff()

isRestartEnabled

bool IsRetryEnabled()

تم إنهاؤه

bool IsTerminated()

هو حاليًا في انتظار المراجعة أو قيد التقدّم

bool IsUpdatePendingOrInProgress()

قفل تحديثات TalkBack

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

يجب استدعاء هذه الطريقة عند تعديل الكتالوج TraitDataSink.

إعادة الاشتراك

void ResetResubscribe(
  void
)

إيقاف آلية إعادة الاشتراك

سيؤدي هذا إلى بدء إعادة المحاولة الفورية

ضبط مدة LiveMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

تم التحديث

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

تعليق عمليات إعادة المحاولة

void SuspendUpdateRetries()

يعمل ذلك على إبلاغ SUBSCRIPTIONClient بالتوقف عن إعادة محاولة طلبات التحديث.

للسماح للتطبيق بتعليق التحديثات لفترة زمنية بدون تجاهل جميع البيانات الوصفية. وسيتم استئناف التحديثات وعمليات إعادة المحاولة عند استدعاء FlushUpdate. عند طلب تعليق تحديثات أثناء البث، لا يتم إلغاء التحديث، ولكن في حالة إخفاقه، لن تتم إعادة المحاولة حتى يتم استدعاء FlushUpdate مرة أخرى.

إلغاء تحديث UpdateUpdatex

void UnlockUpdateMutex(
  void
)