nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
كائن المدير لدليل خدمة Weave.
ملخّص
مدير خدمة Weave هو الواجهة الرئيسية لتطبيقات خدمة الدليل. وبناءً على ذلك، يخفي التعقيدات الكامنة في البحث عن إدخال الدليل المرتبط بنقطة نهاية الخدمة، مع إجراء بحث في نظام أسماء النطاقات على واحد أو أكثر من أسماء المضيفين الموجودة هناك، ومحاولة الاتصال، وتأمين الاتصال، وما إلى ذلك. وقد يدير أيضًا ذاكرة التخزين المؤقت لمعلومات دليل الخدمة.
الدلالة والهياكل |
|
---|---|
WeaveServiceManager(void)
تعمل هذه الطريقة على تهيئة مثيل WeaveServiceManager.
|
|
~WeaveServiceManager(void)
تؤدي هذه الطريقة إلى إيقاف مثيل WeaveServiceManager.
|
الأنواع العلنية |
|
---|---|
@303{
|
تعداد |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
يشير ذلك المصطلح إلى معاودة الاتصال بالتطبيق التي يتم إجراؤها قبل عملية الربط مباشرةً. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
استدعاء تطبيق لتحديد وقت طلب بحث دليل خدمة صادر. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
يشير ذلك المصطلح إلى استدعاء تطبيق لعرض قيم الوقت من استجابة دليل الخدمة. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor دالة موصّل لمعلومات الدليل الجذري. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
معالج للخطأ وشروط الحالة. |
الدوال العامة |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
يمكنك ضبط وظيفة استدعاء ليتم طلبها قبل إنشاء الاتصال مباشرةً.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
تلغي هذه الطريقة طلب الربط.
|
clearCache(void)
|
void
تمحو هذه الطريقة الحالة وذاكرة التخزين المؤقت للمدير إذا كانت الحالة في حالة الوحدة الطرفية kServiceMgrState_resolved، ما يعني أنه تم استلام الاستجابة من نقطة نهاية دليل الخدمة.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
تطلب هذه الطريقة الاتصال بخدمة Weave.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
تؤدي هذه الطريقة إلى تهيئة كائن مدير الخدمة.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
تبحث هذه الطريقة عن معلومات الدليل لنقطة نهاية الخدمة.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
تبحث هذه الطريقة عن معلومات الدليل لنقطة نهاية الخدمة.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
تعالج هذه الطريقة حدث الاتصال المغلق الذي تم الإبلاغ عنه من خلال سياق تبادل Weave المرتبط.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
تعالج هذه الطريقة حدث الربط المكتمل لمعاملة طلب البحث في نقطة نهاية الخدمة.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
تعالج هذه الطريقة أي رسالة رد في المحادثة مع خدمة الدليل.
|
onResponseTimeout(void)
|
void
تتعامل هذه الطريقة مع حدث المهلة، الذي لم يتم فيه تلقّي أي رد من خدمة الدليل.
|
relocate(WEAVE_ERROR aError)
|
void
تعيد هذه الطريقة موقع ذاكرة التخزين المؤقت لدليل الخدمة.
|
relocate(void)
|
void
تعيد هذه الطريقة موقع ذاكرة التخزين المؤقت لدليل الخدمة.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
أضِف إدخال الدليل الذي يلغي اسم المضيف ومعرِّف المنفذ في بداية قائمة الأدلة.
|
reset(WEAVE_ERROR aError)
|
void
تؤدي هذه الطريقة إلى إعادة ضبط مدير الخدمة على حالته الأولية.
|
reset(void)
|
void
تؤدي هذه الطريقة إلى إعادة ضبط مدير الخدمة على حالته الأولية.
|
unresolve(WEAVE_ERROR aError)
|
void
تؤدي هذه الطريقة إلى إبطال ذاكرة التخزين المؤقت لدليل الخدمة.
|
unresolve(void)
|
void
تؤدي هذه الطريقة إلى إبطال ذاكرة التخزين المؤقت لدليل الخدمة.
|
صفوف |
|
---|---|
nl:: |
وتمثّل هذه الفئة معاملة واحدة يُديرها مدير الخدمة. |
الأنواع العلنية
@303
@303
أماكن إقامة | |
---|---|
kWeave_DefaultSendTimeout
|
عدد المللي ثانية الذي يجب تلقّي الرد فيه لطلب البحث عن الدليل قبل انتهاء مهلة سياق التبادل. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
يشير ذلك المصطلح إلى معاودة الاتصال بالتطبيق التي يتم إجراؤها قبل عملية الربط مباشرةً.
يمكن استخدام معاودة الاتصال هذه من خلال التطبيقات لمراقبة الوسيطات التي تم تمريرها إلى #WeaveConnection::Connect() واختياريًا لتغييرها أثناء عملية إنشاء اتصال خدمة. سيتم استدعاء رد الاتصال هذا لكل من الاتصال بنقطة نهاية الخدمة المستهدفة، بالإضافة إلى الاتصال بنقطة نهاية دليل الخدمة في حال ضرورة إجراء بحث عن الدليل.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
استدعاء تطبيق لتحديد وقت طلب بحث دليل خدمة صادر.
يتم استدعاء هذا الأمر عندما نكون على وشك إرسال طلب استعلام نقطة نهاية الخدمة. وتُستخدم هذه السمة للمطابقة مع OnServiceEndpointQueryEnd لتعويض وقت رحلة الرسالة.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
يشير ذلك المصطلح إلى استدعاء تطبيق لعرض قيم الوقت من استجابة دليل الخدمة.
يتم استدعاء هذا الإجراء عندما نحصل على معلومات الوقت من استجابة طلب بحث دليل الخدمة. يُرجى العلم أنّ معاودة الاتصال هذه لن تحدث إلا إذا تم تحليل الاستجابة بنجاح وتم تضمين معلومات الوقت.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
دالة موصّل لمعلومات الدليل الجذري.
يجب أن تبدأ من مكان ما، وباستخدام دليل الخدمة، عليك أن تبدأ بدليل ملفات كعب يحتوي على عنوان خادم يمكنك الضغط عليه للحصول على كل شيء آخر. بما أنّه من المحتمل أن يختلف ترتيب هذه المعلومات وأصلها من جهاز إلى آخر، نوفّر لمعاودة الاتصال بهذه المعلومات هنا.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
المرتجعات |
WEAVE_NO_ERROR عند نجاح العملية، وإلا سيتم إلغاء عملية التحميل.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
معالج للخطأ وشروط الحالة.
قد يتم إعلام مستخدم مدير الخدمة بالمشاكل المتعلقة بمحاولة تنفيذ طلب الاتصال بإحدى الطريقتين. قد يتلقّى التقرير تقرير حالة من الخدمة أو قد يتلقّى رسالة WEAVE_ERROR تم إنشاؤها داخليًا. في كلتا الحالتين، تأتي المعلومات من خلال معاودة الاتصال هذه.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
الدوال العامة
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
يمكنك ضبط وظيفة استدعاء ليتم طلبها قبل إنشاء الاتصال مباشرةً.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
WeaveServiceManager
WeaveServiceManager( void )
تعمل هذه الطريقة على تهيئة مثيل WeaveServiceManager.
تجدر الإشارة إلى أنّه يجب استدعاء init() لإعداد هذا المثيل بشكل أكبر.
إلغاء
void cancel( uint64_t aServiceEp, void *aAppState )
تلغي هذه الطريقة طلب الربط.
تلغي هذه الطريقة طلب ربط نظرًا لمعرّف نقطة نهاية الخدمة وكائن حالة التطبيق الذي تم تمريره في وقت الطلب كمعرّفات. إذا كان هذا آخر طلب ربط، تمحو هذه الطريقة أيضًا أي حالة في انتظار المراجعة لاتصال دليل الخدمة.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
clearCache
void clearCache( void )
تمحو هذه الطريقة الحالة وذاكرة التخزين المؤقت للمدير إذا كانت الحالة في حالة الوحدة الطرفية kServiceMgrState_resolved، ما يعني أنه تم استلام الاستجابة من نقطة نهاية دليل الخدمة.
اتصل
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
تطلب هذه الطريقة الاتصال بخدمة Weave.
هذه مكالمة اتصال على المستوى الأعلى. فهي تنشئ اتصالاً آمنًا بشكل أساسي بخدمة Weave التي يتم تحديد نقطة نهاية للخدمة ووضع مصادقة أو يموت أثناء محاولة.
لا يمكن استدعاء هذه الطريقة إلا بعد إجراء اتصال ناجح بـ init()، ويمكن إلغاء طلب الربط عن طريق cancel().
يمكن استدعاء هذه الطريقة قبل أن تمتلئ ذاكرة التخزين المؤقت المحلية ببيانات إما من البيانات المتوفرة تلقائيًا أو من رحلة إلى خدمة الدليل. سيقوم مدير الخدمة فقط بوضع الطلب في قائمة الانتظار قبل تحديد محتوى ذاكرة التخزين المؤقت.
التفاصيل | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||||||||
المرتجعات |
WEAVE_NO_ERROR عند النجاح، وبخلاف ذلك، يتم عرض رمز خطأ ذي صلة.
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
تؤدي هذه الطريقة إلى تهيئة كائن مدير الخدمة.
ويجب إعداد كائن مدير الخدمة لاستخدامه، حتى يتم استخدامه. بعد إجراء استدعاء ناجح لهذه الطريقة، يمكن للعملاء بدء استدعاء connect() وlookup() وطرق أخرى.
التفاصيل | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||||||||||
المرتجعات |
WEAVE_ERROR_INVALID_ARGUMENT إذا كانت وسيطة الدالة غير صالحة، وإلا، WEAVE_NO_ERROR.
|
البحث
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
تبحث هذه الطريقة عن معلومات الدليل لنقطة نهاية الخدمة.
إذا تم حلّ دليل الخدمة، مثلاً إذا كانت هناك عملية connect() ناجحة، ستؤدي هذه الطريقة إلى تعبئة الكائن HostPortList المقدّم.
ملاحظة: يتم ربط HostPortList بالكائن WeaveServiceManager، ويبقى صالحًا إلى أن يتم محو ذاكرة التخزين المؤقت لدليل الخدمة أو حتى يتم إجراء بحث آخر عن دليل خدمة.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
البحث
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
تبحث هذه الطريقة عن معلومات الدليل لنقطة نهاية الخدمة.
إذا تم حل دليل الخدمة، أي إذا كانت هناك عملية connect() ناجحة، ستعرض هذه الطريقة إدخال الدليل وفقًا لمعرّف نقطة نهاية الخدمة.
تعرض هذه الطريقة تفاصيل التنفيذ الداخلي لدليل الخدمة، ويجب أن تحظى عمليات التنفيذ بتفضيل كبير لاستخدام صيغة هذه الطريقة التي تنشئ HostPortList.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
تعالج هذه الطريقة حدث الاتصال المغلق الذي تم الإبلاغ عنه من خلال سياق تبادل Weave المرتبط.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
تعالج هذه الطريقة حدث الربط المكتمل لمعاملة طلب البحث في نقطة نهاية الخدمة.
هناك عدة احتمالات. أولاً، ربما يفشل الاتصال وفي هذه الحالة تكون قد انتهينا. بخلاف ذلك، يكون الاتصال كاملاً فعلاً وما نريد القيام به هو فتح سياق التبادل وإرسال استعلام دليل.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
تعالج هذه الطريقة أي رسالة رد في المحادثة مع خدمة الدليل.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
onResponseTimeout
void onResponseTimeout( void )
تتعامل هذه الطريقة مع حدث المهلة، الذي لم يتم فيه تلقّي أي رد من خدمة الدليل.
تغيير الموقع
void relocate( WEAVE_ERROR aError )
تعيد هذه الطريقة موقع ذاكرة التخزين المؤقت لدليل الخدمة.
عندما تعرض نقطة نهاية الخدمة تقرير حالة برمز الحالة kStatus_Relocation، قد يطلب التطبيق الأمر unresolve() لمحو ذاكرة التخزين المؤقت وإلغاء طلبات الاتصال. تعمل هذه الطريقة على تبسيط معالجة الأخطاء من خلال استدعاء unresolve() في أول مرة وreset() إذا لم يتم حل المشكلة بعد.
هذا الإصدار من الطريقة - متوفر هنا للتوافق مع الأنظمة القديمة - يأخذ خطأً ويسجله ثم يستدعي relocate(void) .
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
relocate(void)
تغيير الموقع
void relocate( void )
تعيد هذه الطريقة موقع ذاكرة التخزين المؤقت لدليل الخدمة.
عندما تعرض نقطة نهاية الخدمة تقرير حالة برمز الحالة kStatus_Relocation، قد يطلب التطبيق الأمر unresolve() لمحو ذاكرة التخزين المؤقت وإلغاء طلبات الاتصال. تعمل هذه الطريقة على تبسيط معالجة الأخطاء من خلال استدعاء unresolve() في أول مرة وreset() إذا لم يتم حل المشكلة بعد.
راجِع أيضًا:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
أضِف إدخال الدليل الذي يلغي اسم المضيف ومعرِّف المنفذ في بداية قائمة الأدلة.
إعادة ضبط
void reset( WEAVE_ERROR aError )
تؤدي هذه الطريقة إلى إعادة ضبط مدير الخدمة على حالته الأولية.
تعيد هذه الطريقة ضبط جميع حالات مدير الخدمة، بما في ذلك حالة الاتصالات وحالة ذاكرة التخزين المؤقت وحالة أي طلبات ربط في انتظار المراجعة.
يأخذ هذا الإصدار من الطريقة، هنا للتوافق مع الأنظمة القديمة، خطأً ويسجّله ثم يستدعي reset(void) .
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
reset(void)
إعادة ضبط
void reset( void )
تؤدي هذه الطريقة إلى إعادة ضبط مدير الخدمة على حالته الأولية.
تعيد هذه الطريقة ضبط جميع حالات مدير الخدمة، بما في ذلك حالة الاتصالات وحالة ذاكرة التخزين المؤقت وحالة أي طلبات ربط في انتظار المراجعة.
راجِع أيضًا:إعادة الضبط(WEAVE_ERROR)
عدم الحل
void unresolve( WEAVE_ERROR aError )
تؤدي هذه الطريقة إلى إبطال ذاكرة التخزين المؤقت لدليل الخدمة.
تحدد هذه الطريقة حالة ذاكرة التخزين المؤقت لدليل الخدمة بحيث يُصدر مدير الخدمة طلب بحث في دليل الخدمة في الطلب التالي.
هذا الإصدار من الطريقة - متوفر هنا للتوافق مع الأنظمة القديمة - يأخذ خطأً ويسجله ثم يستدعي unresolve(void) .
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
unresolve(void)
عدم الحل
void unresolve( void )
تؤدي هذه الطريقة إلى إبطال ذاكرة التخزين المؤقت لدليل الخدمة.
تحدد هذه الطريقة حالة ذاكرة التخزين المؤقت لدليل الخدمة بحيث يُصدر مدير الخدمة طلب بحث في دليل الخدمة في الطلب التالي.
راجِع أيضًا:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
تؤدي هذه الطريقة إلى إيقاف مثيل WeaveServiceManager.