nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
ملخّص
الأنواع العامة |
|
---|---|
@130
|
تعداد |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
تعريف الكتابةvoid(*
معاودة الاتصال لتمرير أحداث الاشتراك إلى التطبيق. |
EventID{
|
تعداد |
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
|
Binding *
|
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:: |
|
nl:: |
الاتحادات |
|
---|---|
nl:: |
|
nl:: |
الأنواع العامة
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
معاودة الاتصال لتمرير أحداث الاشتراك إلى التطبيق.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
|
EventID
EventID
أماكن إقامة | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
يتم إنشاؤه عندما يحصي SubscriptionEngine بث حدث ضمن رسالة NotificationRequest. في هذه المرحلة، قد يستدعي التطبيق الإجراء EndSubscription() أو AbortSubscription() أو Free(). |
||||||||||||
kEvent_OnExchangeStart
|
يتم إنشاؤه بعد إعداد الربط وإعداد ExchangeContext ولكن قبل إرسال أي رسائل. هذه هي الفرصة الأخيرة لتطبيق ما لضبط إعدادات 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 إلى ما إذا كانت ستتم محاولة إعادة الاشتراك تلقائيًا أم لا. أثناء استدعاء معالج الحدث، ستكون حالة البرنامج قد يستدعي التطبيق الإجراء AbortSubscription() أو Free() في هذه الحالة. وستتضمّن المَعلمات التي تم إرسالها أيضًا رمز خطأ يشير إلى سبب إنهاء الاشتراك. قد يتم إنهاء الاشتراك لعدد من الأسباب ("WRM ACK مفقود"، أو تعذّر تخصيص ExchangeContext، أو انتهت مهلة الاستجابة، أو...) في ما يلي بعض رموز الأخطاء المحتملة التي أنشأها العميل:
|
||||||||||||
kEvent_OnUpdateComplete
|
حدث يشير إلى اكتمال عملية التحديث. ستوضّح مَعلمات الأحداث ما إذا كان تعديل مسار سمة معيّنة قد نجح أو تعذّر تعديله. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &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 )
تفعيل ميزة إعادة الاشتراك التلقائية
يُرجى إرفاق رد اتصال لتحديد وقت إعادة المحاولة التالية عند التعذُّر.
التفاصيل | |||
---|---|---|---|
المعلمات |
|
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.
ما لم يتم إجراء عملية تبادل تحديث سابقة، سيأخذ العميل جميع البيانات التي تم وضع علامة عليها على أنّها محدَّثة ويرسلها إلى المجيب في طلب تعديل واحد. ويمكن استدعاء هذه الطريقة من أي سلسلة محادثات.
التفاصيل | |||
---|---|---|---|
المعلمات |
|
||
المرتجعات |
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 )
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 )