nl:: Weave:: Profiles:: DataManagement_Legacy:: Binding
#include <src/lib/profiles/data-management/Legacy/Binding.h>
تدير الفئة الربط حالة الاتصالات نيابةً عن كيان التطبيق باستخدام Weave.
ملخّص
عندما يريد أحد التطبيقات استخدام Weave للتواصل مع كيان بعيد، فهناك مجموعة متنوعة من الخيارات. تعمل فئة الربط على تجميع هذه الخيارات وتنظيمها بطريقة تجعل العناصر السهلة سهلة، والعناصر الأكثر صعوبة يمكن تتبعها على الأقل. تشمل الخيارات التي يتم تناولها ما يلي:
- اتصال UDP أحادي البث مع عقدة نظيرة معروفة.
- بث UDP مع عقدة "أي".
- اتصال WRMP أحادي البث مع عقدة نظيرة معروفة.
- اتصالات بروتوكول التحكم بالنقل مع عقدة نظير معروفة.
- اتصالات بروتوكول التحكم بالنقل مع نقطة نهاية خدمة معروفة باستخدام مثيل مدير الخدمة لإعداد الأمور.
- اتصالات TCP المستندة إلى اتصال محدد مسبقًا.
الدلالة والهياكل |
|
---|---|
Binding(void)
الدالة الإنشائية التلقائية لكائنات الربط.
|
|
~Binding(void)
دالة إلغاء الربط لكائنات الربط.
|
الأنواع العلنية |
|
---|---|
@165{
|
تعداد مجموعة حالات كائن الربط. |
السمات العامة |
|
---|---|
mAuthMode
|
WeaveAuthMode
وضع مصادقة Weave الذي سيتم استخدامه.
|
mConnection
|
مؤشر لاتصال Weave قيد الاستخدام حاليًا في هذا الربط.
|
mEngine
|
مؤشر إلى الكائن ProtocolEngine المرتبط بـ الربط هذا.
|
mPeerNodeId
|
uint64_t
رقم تعريف العقدة 64 بت لهدف الربط.
|
mServiceMgr
|
مؤشر إلى كائن ServiceManager (اختياري) لاستخدامه في إكمال هذا الربط.
|
mState
|
uint8_t
حالة كائن الربط الحالية.
|
mTransport
|
uint8_t
نقل البيانات المطلوب استخدامه لإكمال عملية الربط هذه.
|
الدوال العامة |
|
---|---|
CompleteConfirm(WeaveConnection *aConnection)
|
void
معالجة تأكيد طلب الربط
|
CompleteConfirm(StatusReport & aReport)
|
void
معالجة إخفاق طلب الربط.
|
CompleteConfirm(void)
|
void
معالجة تأكيد طلب الربط
|
CompleteRequest(ProtocolEngine *aEngine)
|
طلب إكمال عملية ربط
|
Connect(WeaveConnection *aConnection)
|
أكمل ربط TCP من خلال توفير اتصال مكتمل.
|
Finalize(void)
|
void
"غير مكتملة" ربط وتحريرها.
|
Finalize(WEAVE_ERROR aErr)
|
void
"غير مكتملة" ربط وتحريرها.
|
Free(void)
|
void
محو حالة الربط
|
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
|
أنتِج كائن ExchangeContext من الربط.
|
IncompleteIndication(StatusReport & aReport)
|
void
معالجة تعذُّر الربط.
|
Init(const uint64_t & aPeerNodeId)
|
عليك إعداد الربط بمعرّف عقدة فقط.
|
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
|
تهيئة كائن الربط استنادًا إلى رقم تعريف النظير والنقل.
|
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
|
تهيئة كائن الربط بنقطة نهاية خدمة.
|
Init(WeaveConnection *aConnection)
|
تهيئة كائن الربط باستخدام WeaveConnection.
|
IsComplete(void)
|
bool
تحقَّق من اكتمال عملية الربط.
|
IsFree(void)
|
bool
الشيك ملزم مجاني.
|
UncompleteRequest(void)
|
void
يؤدي إلى عدم اكتمال الارتباط.
|
UncompleteRequest(WEAVE_ERROR aErr)
|
void
يؤدي إلى عدم اكتمال الارتباط.
|
الأنواع العلنية
@165
@165
مجموعة حالات كائن الربط.
أماكن إقامة | |
---|---|
kState_Complete
|
يشير ذلك المصطلح إلى حالة الربط التي تكون مكتملة وجاهزة للاستخدام. |
kState_Completing
|
تمثّل هذه السمة حالة الربط التي تكون قيد الاكتمال. |
kState_Incomplete
|
الحالة الأولية (والنهائية) للربط. |
السمات العامة
mAuthMode
WeaveAuthMode mAuthMode
وضع مصادقة Weave الذي سيتم استخدامه.
(قراءة فقط)
هذا هو وضع المصادقة المستخدَم في جميع المراسلات التي تحكمها عملية الربط هذه.
mConnection
WeaveConnection * mConnection
مؤشر لاتصال Weave قيد الاستخدام حاليًا في هذا الربط.
(للقراءة فقط)
قد يتم إعداد عمليات ربط بروتوكول التحكم بالنقل من خلال اتصال مباشرةً من البداية أو قد تخصص ارتباطًا عند الانتهاء.
mEngine
ProtocolEngine * mEngine
مؤشر إلى الكائن ProtocolEngine المرتبط بـ الربط هذا.
ويكتمل الربط عمومًا فيما يتعلق بمحرك بروتوكول معين، والذي يُستخدم في الغالب كطريقة للوصول إلى MessageLayer. هذا هو المكان الذي نتتبع فيه ذلك.
mPeerNodeId
uint64_t mPeerNodeId
رقم تعريف العقدة 64 بت لهدف الربط.
(للقراءة فقط)
لكل ربط كيان مستهدَف، تتم تسميته هنا. بالإضافة إلى معرّف عقدة Weave، قد يسمي هذا نقطة نهاية الخدمة.
mServiceMgr
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr
مؤشر إلى كائن ServiceManager (اختياري) لاستخدامه في إكمال هذا الربط.
(للقراءة فقط)
عند الربط بخدمة Weave، قد يتم توفير رقم تعريف نقطة نهاية خدمة 64 بت في وقت الإعداد بدلاً من رقم تعريف عقدة Weave. في هذه الحالة، يجب أيضًا توفُّر كائن ServiceManager لإكمال الربط. لا تتطلب روابط TCP أو WRMP العادية كائن ServiceManager.
mState
uint8_t mState
حالة كائن الربط الحالية.
يمكن تشغيل عملية "مكتملة" واحدة فقط في كل مرة، وفي جميع الأحوال، إذا طلبت إكمال عملية ربط مكتملة، يتم استدعاء وظيفة التأكيد على الفور فقط. يتتبّع متغيّر الحالة أدناه الحالة الحالية ويعمل كقفل.
mTransport
uint8_t mTransport
نقل البيانات المطلوب استخدامه لإكمال عملية الربط هذه.
(للقراءة فقط)
يتم تحديد القيم المحتملة لـ mTransport في DMConstants.h.
الدوال العامة
CompleteConfirm
void CompleteConfirm( WeaveConnection *aConnection )
معالجة تأكيد طلب الربط
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
CompleteConfirm
void CompleteConfirm( StatusReport & aReport )
معالجة إخفاق طلب الربط.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
CompleteConfirm
void CompleteConfirm( void )
معالجة تأكيد طلب الربط
CompleteRequest
WEAVE_ERROR CompleteRequest( ProtocolEngine *aEngine )
طلب إكمال عملية ربط
يتم تنفيذ الربط، على الأقل بالنسبة إلى الروابط التي تتطلب بروتوكول TCP، في ما يتعلق بكائن ProtocolEngine معيّن، والذي يوفر إمكانية الوصول إلى مثيل ExchangeManager.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
||||||
المرتجعات |
وبخلاف ذلك، يتم عرض أي WEAVE_ERROR أثناء محاولة الاتصال.
|
ربط
WEAVE_ERROR Connect( WeaveConnection *aConnection )
أكمل ربط TCP من خلال توفير اتصال مكتمل.
لا يمكن استخدام ربط TCP الذي تم إعداده حديثًا حتى يكتمل. عادةً ما يتم ذلك عند الطلب عندما يحاول التطبيق الاستفادة من الربط لإرسال الرسائل ولكن يمكن أيضًا إكماله صراحةً من خلال توفير اتصال Weave.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
الصياغة النهائية
void Finalize( void )
"غير مكتملة" ربط وتحريرها.
قد تحتاج عمليات الربط إلى حالة تتطلب تنظيفها، على سبيل المثال إغلاق الاتصال، والذي تتم معالجته من خلال طريقة Uncomplete() بالإضافة إلى حالة ما يتم محوه من حالته الأولية باستخدام طريقة Free(). هذه الطريقة - في الغالب بهدف التيسير ، تستدعي كليهما.
راجِع أيضًا:Finalize(WEAVE_ERROR)
الصياغة النهائية
void Finalize( WEAVE_ERROR aErr )
"غير مكتملة" ربط وتحريرها.
قد تحتاج عمليات الربط إلى حالة تتطلب تنظيفها، على سبيل المثال إغلاق الاتصال، والذي تتم معالجته من خلال طريقة Uncomplete() بالإضافة إلى حالة ما يتم محوه من حالته الأولية باستخدام طريقة Free(). هذه الطريقة - في الغالب بهدف التيسير ، تستدعي كليهما.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
Finalize(void)
مجاني
void Free( void )
محو حالة الربط
إعادة كل حالة الربط إلى حالتها الأصلية بدون شرط.
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
أنتِج كائن ExchangeContext من الربط.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
المرتجعات |
مؤشر إلى كائن ExchangeContext أو NULL عند الفشل.
|
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
معالجة تعذُّر الربط.
يتم استدعاء هذه الطريقة، وبالتالي تستدعي معالجات ذات طبقات أعلى عند تعذُّر الربط "بعد اكتمال"، أي بعد استدعاء CompleteConfirm() بحالة تشير إلى النجاح.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
CompleteConfirm(StatusReport &aReport).
إنت
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
عليك إعداد الربط بمعرّف عقدة فقط.
ينتج عن ذلك ربط بعملية النقل التلقائية التي تم إعدادها.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
إنت
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
تهيئة كائن الربط استنادًا إلى رقم تعريف النظير والنقل.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
إنت
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
تهيئة كائن الربط بنقطة نهاية خدمة.
هذه هي الطريقة التي يتم بها الالتزام بنقطة نهاية معيّنة على خدمة Nest. يتطلب أي ربط من هذا النوع عملية إكمال متعددة المراحل، والتي قد تتضمن تعبئة ذاكرة التخزين المؤقت لدليل الخدمة المحلية أو تحديثها. في الغالب، تكون هذه العملية مخفية عن التطبيق ولكنها تعني أن الأخطاء التي تنشأ لاحقًا في العملية يمكن تسليمها، عادةً من خلال معاودة الاتصال ذات الصلة بعبارة "التأكيد"، بعد - وأحيانًا بعد فترة طويلة - الطلب الأصلي لاستخدام (وإكمال) الطلب الأصلي.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
إنت
WEAVE_ERROR Init( WeaveConnection *aConnection )
تهيئة كائن الربط باستخدام WeaveConnection.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
IsComplete
bool IsComplete( void )
تحقَّق من اكتمال عملية الربط.
التفاصيل | |
---|---|
المرتجعات |
true إذا كانت مكتملة أو false في الحالات الأخرى.
|
CompleteRequest(ProtocolEngine *aEngine)
IsFree
bool IsFree( void )
الشيك ملزم مجاني.
وتعني كلمة "مجاني" في هذا السياق ببساطة، "له عقدة نظيرة محددة". يجب اعتبار IsFree() كمعنى "تم استدعاء Free() عليه ولم يتم استخدامه منذ ذلك الحين".
التفاصيل | |
---|---|
المرتجعات |
true إذا كان الربط حرًا أو false في الحالات الأخرى.
|
UncompleteRequest
void UncompleteRequest( void )
يؤدي إلى عدم اكتمال الارتباط.
وفي الأساس، يكون الربط بالحالة "غير كامل" بعد طلب هذه الطريقة، ولكن، وبشكل أكثر دقة، يجب تنظيف أي حالة ذات صلة غير مضمّنة في الربط نفسه، على سبيل المثال، اتصال بروتوكول التحكم بالنقل. يمكن للتطبيقات استدعاء UncompleteRequest() كجزء من إزالة الخطأ.
راجِع أيضًا:UncompleteRequest(WEAVE_ERROR )
UncompleteRequest
void UncompleteRequest( WEAVE_ERROR aErr )
يؤدي إلى عدم اكتمال الارتباط.
وفي الأساس، يكون الربط بالحالة "غير كامل" بعد طلب هذه الطريقة، ولكن، وبشكل أكثر دقة، يجب تنظيف أي حالة ذات صلة غير مضمّنة في الربط نفسه، على سبيل المثال، اتصال بروتوكول التحكم بالنقل. يمكن للتطبيقات استدعاء UncompleteRequest() كجزء من إزالة الخطأ.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
UncompleteRequest(void)
~تجليد
virtual ~Binding( void )
دالة إلغاء الربط لكائنات الربط.
يمحو جميع الحالات الداخلية AND، يغلق الاتصالات المفتوحة إذا لزم الأمر.