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

ملخّص

الأنواع العامة

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

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

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
سيؤدي تنفيذ السياسة التلقائية إلى اختيار فترة زمنية عشوائية بدرجة دقة مللي ثانية خلال فترة متزايدة، بعد تسلسل فيبوناتشي يصل إلى WDM_REREVIEW_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::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

الاتحادات

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

الأنواع العامة

@130

 @130

EventCallback

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

معاودة الاتصال لتمرير أحداث الاشتراك إلى التطبيق.

التفاصيل
المعلمات
[in] aAppState
مؤشر حالة التطبيق الذي تم ضبطه أثناء إعداد SubscriptionClient.
[in] aEvent
يشير إلى الحدث الذي سيقع
[in] aInParam
بنية تحتوي على تفاصيل إضافية عن الحدث
[out] aOutParam
المعلومات التي تمت معالجتها من خلال التطبيق

EventID

 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

يتم إنشاؤه من خلال تلقّي إشعار في NotificationRequest.

في هذه المرحلة، قد يستدعي التطبيق الإجراء EndSubscription() أو AbortSubscription() أو Free().

kEvent_OnSubscribeRequestPrepareNeeded

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

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

kEvent_OnSubscriptionActivity

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

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

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_REREVIEW_MAX_FIBONACCI_STEP_INDEX.

سيكون متوسط وقت الانتظار العشوائي بعد WDM_REACCOUNT_MAX_FIBONACCI_STEP_INDEX ساعة واحدة تقريبًا. عند إعادة ضبط عدد إعادة المحاولة على 0، يبدأ التسلسل من البداية مرة أخرى.

وظائف عامة

AbortSubscription

void AbortSubscription(
  void
)

إلغاء الاشتراك

إلغاء اشتراك عميل

التوقّف فورًا عن قبول جميع الزيارات المرتبطة بالاشتراك، والإفراج عن جميع موارد الاتصال الأساسية يظل عنصر SubscriptionClient نفسه صالحًا ويمكن استخدامه من جديد.

إنهاء اشتراك العميل، بدون إشعار ناشر الاشتراك وبدون تسليم حدث OnSubscriptionTerminated إلى معالج أحداث التطبيق في حال توفُّر اشتراك مشترَك، يتم إنهاء الاشتراك المضاد أيضًا.

عند استدعاء AbortSubscription()، يدخل الكائن SubscriptionClient في حالة Terminated. بعد اكتمال عملية الإنهاء، يدخل العنصر في حالة Initialized. تتم كلتا عمليتَي النقل بشكلٍ متزامن في استدعاء AbortSubscription().

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

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

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

سيتم إلغاء هذا الإجراء في حال كانت ميزة إعادة الاشتراك معلّقة.

DiscardUpdates

void DiscardUpdates()

يخبر هذا الإعداد SubscriptionClient بإفراغ مجموعة مسارات TraitPath التي في انتظار التحديث وإلغاء طلب التحديث الجاري، إن وجد.

يمكن استدعاء هذه الطريقة من أي معاودة اتصال.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

تفعيل ميزة إعادة الاشتراك التلقائية

يُرجى إرفاق رد اتصال لتحديد وقت إعادة المحاولة التالية عند التعذُّر.

التفاصيل
المعلمات
[in] aCallback
استدعاء اختياري لجلب مقدار الوقت اللازم للانتظار قبل إعادة المحاولة بعد الإخفاق. إذا كانت القيمة فارغة (NULL)، تُستخدَم السياسة التلقائية.

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

أنهِ الاشتراك.

إنهاء اشتراك العميل بسلاسة.

عند تفعيل خيار وقت التجميع WDM_ENABLE_SUBSCRIPTION_CANCEL، يمكنك إنهاء الاشتراك على نحو ملائم عن طريق إرسال طلبCancelRequest إلى التطبيق المشابه. يتم تفريغ الموارد المرتبطة بالاشتراك بناءً على رد الزميل أو عند انتهاء المهلة. عندما يتم إيقاف هذا الخيار، تكون المكالمة معادِلة الإجراء AbortSubscription().

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

أثناء انتظار الرد على SubscriberCancelRequest، فإن SubscriptionClient تدخل الحالة Canceling.

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

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

FlushUpdate

WEAVE_ERROR FlushUpdate()

إشارات تفيد بأنّ التطبيق قد انتهى من تغيير جميع TraitUpdatableDataSinks.

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

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

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

مجانًا

void Free(
  void
)

حرِّر عنصر SubscriptionClient هذا.

يمكنك تحرير عنصر SubscriptionClient.

يؤدي هذا الإجراء إلى استدعاء الدالة AbortSubscription() إذا لزم الأمر وإطلاق طلب إعادة التوجيه في هذا الكائن 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
)

InitiateSubscription

void InitiateSubscription(
  void
)

اضبط SubscriptionClient كبادئ تشغيل (على عكس المشتركين المضاد) وارفع اشتراكك إذا لم يكن كذلك.

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

يجب طلب هذه الطريقة بعد تعديل كتالوج 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
)