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{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
تعداد
مجموعة حالات كائن الربط.

السمات العامة

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.

الدوال العامة

تجميع

 Binding(
  void
)

الدالة الإنشائية التلقائية لكائنات الربط.

محو كل الحالات الداخلية

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

معالجة تأكيد طلب الربط

التفاصيل
المَعلمات
[in] aConnection
مؤشر يؤدّي إلى WeaveConnection نشط إلى هدف الربط.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

معالجة إخفاق طلب الربط.

التفاصيل
المَعلمات
[in] aReport
مرجع إلى كائن StatusReport يصف الفشل.

CompleteConfirm

void CompleteConfirm(
  void
)

معالجة تأكيد طلب الربط

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

طلب إكمال عملية ربط

يتم تنفيذ الربط، على الأقل بالنسبة إلى الروابط التي تتطلب بروتوكول TCP، في ما يتعلق بكائن ProtocolEngine معيّن، والذي يوفر إمكانية الوصول إلى مثيل ExchangeManager.

التفاصيل
المَعلمات
[in] aEngine
مؤشر إلى عنصر ProtocolEngine يتم تنفيذ الإكمال نيابةً عنه.
قيم الإرجاع
WEAVE_NO_ERROR
عند النجاح
WEAVE_ERROR_INCORRECT_STATE
ما إذا كان قد تم إكمال عملية الربط
WEAVE_ERROR_NO_MEMORY
في حال كان الاتصال مطلوبًا ولم يتوفّر أي اتصال
المرتجعات
وبخلاف ذلك، يتم عرض أي WEAVE_ERROR أثناء محاولة الاتصال.

ربط

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

أكمل ربط TCP من خلال توفير اتصال مكتمل.

لا يمكن استخدام ربط TCP الذي تم إعداده حديثًا حتى يكتمل. عادةً ما يتم ذلك عند الطلب عندما يحاول التطبيق الاستفادة من الربط لإرسال الرسائل ولكن يمكن أيضًا إكماله صراحةً من خلال توفير اتصال Weave.

التفاصيل
المَعلمات
[in] aConnection
مؤشر يشير إلى WeaveConnection الذي يتم استخدامه لإكمال عملية الربط.
قيم الإرجاع
WEAVE_NO_ERROR
عند النجاح
WEAVE_ERROR_INCORRECT_STATE
إذا سبق الربط بهذه البيانات
WEAVE_ERROR_INVALID_ARGUMENT
إذا كان الاتصال فارغًا (NULL).

الصياغة النهائية

void Finalize(
  void
)

"غير مكتملة" ربط وتحريرها.

قد تحتاج عمليات الربط إلى حالة تتطلب تنظيفها، على سبيل المثال إغلاق الاتصال، والذي تتم معالجته من خلال طريقة Uncomplete() بالإضافة إلى حالة ما يتم محوه من حالته الأولية باستخدام طريقة Free(). هذه الطريقة - في الغالب بهدف التيسير ، تستدعي كليهما.

راجِع أيضًا:
Finalize(WEAVE_ERROR)

الصياغة النهائية

void Finalize(
  WEAVE_ERROR aErr
)

"غير مكتملة" ربط وتحريرها.

قد تحتاج عمليات الربط إلى حالة تتطلب تنظيفها، على سبيل المثال إغلاق الاتصال، والذي تتم معالجته من خلال طريقة Uncomplete() بالإضافة إلى حالة ما يتم محوه من حالته الأولية باستخدام طريقة Free(). هذه الطريقة - في الغالب بهدف التيسير ، تستدعي كليهما.

التفاصيل
المَعلمات
[in] aErr
يشير رمز الخطأ هذا إلى سبب هذا الطلب. وإذا لم يكن الأمر كذلك WEAVE_NO_ERROR، فقد يتم إلغاء اتصال TCP.
يُرجى الاطّلاع أيضًا على:
Finalize(void)

مجاني

void Free(
  void
)

محو حالة الربط

إعادة كل حالة الربط إلى حالتها الأصلية بدون شرط.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

أنتِج كائن ExchangeContext من الربط.

التفاصيل
المَعلمات
[in] aExchangeMgr
مؤشر يشير إلى مدير Exchange المطلوب طلب سياق منه.
[in] aAppState
مؤشر الفارغ إلى كائن حالة التطبيق المراد تخزينه في سياق التبادل لاستخدامه لاحقًا.
المرتجعات
مؤشر إلى كائن ExchangeContext أو NULL عند الفشل.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

معالجة تعذُّر الربط.

يتم استدعاء هذه الطريقة، وبالتالي تستدعي معالجات ذات طبقات أعلى عند تعذُّر الربط "بعد اكتمال"، أي بعد استدعاء CompleteConfirm() بحالة تشير إلى النجاح.

التفاصيل
المَعلمات
[in] aReport
إحالة إلى تقرير الحالة لوصف الخطأ الذي حدث.
يُرجى الاطّلاع أيضًا على:
CompleteConfirm(StatusReport &aReport).

إنت

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

عليك إعداد الربط بمعرّف عقدة فقط.

ينتج عن ذلك ربط بعملية النقل التلقائية التي تم إعدادها.

التفاصيل
المَعلمات
[in] aPeerNodeId
مرجع إلى رقم تعريف 64 بت لهدف الربط.
قيم الإرجاع
WEAVE_NO_ERROR
عند النجاح
WEAVE_ERROR_INVALID_ARGUMENT
إذا لم يتم تحديد الربط بشكلٍ كافٍ.

إنت

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

تهيئة كائن الربط استنادًا إلى رقم تعريف النظير والنقل.

التفاصيل
المَعلمات
[in] aPeerNodeId
مرجع إلى معرّف عقدة 64 بت لهدف الربط.
[in] aTransport
مواصفات النقل، من WeaveTransportOption.
قيم الإرجاع
WEAVE_NO_ERROR
عند النجاح
WEAVE_ERROR_INVALID_ARGUMENT
إذا لم يتم تحديد الربط بشكلٍ كافٍ.

إنت

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

تهيئة كائن الربط بنقطة نهاية خدمة.

هذه هي الطريقة التي يتم بها الالتزام بنقطة نهاية معيّنة على خدمة Nest. يتطلب أي ربط من هذا النوع عملية إكمال متعددة المراحل، والتي قد تتضمن تعبئة ذاكرة التخزين المؤقت لدليل الخدمة المحلية أو تحديثها. في الغالب، تكون هذه العملية مخفية عن التطبيق ولكنها تعني أن الأخطاء التي تنشأ لاحقًا في العملية يمكن تسليمها، عادةً من خلال معاودة الاتصال ذات الصلة بعبارة "التأكيد"، بعد - وأحيانًا بعد فترة طويلة - الطلب الأصلي لاستخدام (وإكمال) الطلب الأصلي.

التفاصيل
المَعلمات
[in] aServiceEpt
مرجع إلى معرِّف 64 بت لنقطة نهاية خدمة Weave المهمة.
[in] aServiceMgr
يشير هذا المصطلح إلى مؤشر لمثيل مدير الخدمة لاستخدامه في البحث عن فئة الخدمة والاتصال بها.
[in] aAuthMode
وضع المصادقة المطلوب استخدامه في عملية الربط
قيم الإرجاع
WEAVE_NO_ERROR
عند النجاح
WEAVE_ERROR_INVALID_ARGUMENT
إذا لم يتم تحديد الربط بشكلٍ كافٍ.

إنت

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

تهيئة كائن الربط باستخدام WeaveConnection.

التفاصيل
المَعلمات
[in] aConnection
مؤشر إلى WeaveConnection لاستخدامه كأساس للربط.
قيم الإرجاع
WEAVE_NO_ERROR
عند النجاح
WEAVE_ERROR_INVALID_ARGUMENT
إذا لم يتم تحديد الربط بشكلٍ كافٍ.

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() كجزء من إزالة الخطأ.

التفاصيل
المَعلمات
[in] aErr
إذا لم يكن الأمر كذلك، WEAVE_NO_ERROR، فسيتم إلغاء الاتصال الحالي، إن وجد، بدلاً من إغلاقه بشكل ملائم.
يُرجى الاطّلاع أيضًا على:
UncompleteRequest(void)

~تجليد

virtual  ~Binding(
  void
)

دالة إلغاء الربط لكائنات الربط.

يمحو جميع الحالات الداخلية AND، يغلق الاتصالات المفتوحة إذا لزم الأمر.