nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

تدير فئة الربط حالة الاتصالات نيابةً عن كيان التطبيق الذي يستخدم Weave.

ملخّص

عندما يريد أحد التطبيقات استخدام Weave للتواصل مع كيان بعيد، فإن هناك مجموعة متنوعة من الخيارات. تجمع فئة الربط بين هذه الخيارات وترتبّها بطريقة تجعل الأمور السهلة والأكثر صعوبة في المتناول. تشمل الخيارات المشمولة ما يلي:

  • اتصال UDP أحادي البث مع عقدة نظير معروفة.
  • بث UDP مع "أي" العقدة.
  • اتصال WRMP أحادي البث بعقدة نظير معروفة.
  • اتصالات TCP مع عقدة نظير معروفة.
  • اتصالات TCP بنقطة نهاية خدمة معروفة باستخدام مثيل مدير الخدمة لإعداد الأمور.
  • اتصالات TCP المستندة إلى اتصال محدد مسبقًا.

الشركات المصنّعة والمُصنّعة

Binding(void)
الدالة الإنشائية التلقائية لكائنات الربط
~Binding(void)
دالة التلف لكائنات ربط.

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

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
تعداد
مجموعة حالات الكائن ربط.

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

mAuthMode
WeaveAuthMode
وضع مصادقة Weave المطلوب استخدامه.
mConnection
مؤشر إلى اتصال Weave المستخدَم حاليًا في عملية الربط هذه.
mEngine
مؤشر إلى الكائن ProtocolEngine المرتبط بـ Binding هذا.
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 من Binding.
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 المطلوب استخدامه.

(READ_ONLY)

وهذا هو وضع المصادقة المستخدم في جميع الاتصالات التي تحكمها عملية الربط هذه.

mConnection

WeaveConnection * mConnection

مؤشر إلى اتصال Weave المستخدَم حاليًا في عملية الربط هذه.

(للقراءة فقط)

قد يتم إعداد عمليات ربط TCP من خلال اتصال خارج نطاق الشبكة مباشرةً أو قد يتم تخصيص واحدة عند الانتهاء.

mEngine

ProtocolEngine * mEngine

مؤشر إلى الكائن ProtocolEngine المرتبط بـ Binding هذا.

يتم إتمام الربط بشكل عام في ما يتعلق بمحرك بروتوكول معين، والذي يُستخدم غالبًا كطريقة للوصول إلى 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
مرجع إلى كائن StateReport يصف الخطأ.

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
إذا كان الاتصال فارغًا.

إكمال الإعداد

void Finalize(
  void
)

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

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

يُرجى الاطّلاع أيضًا على:
إنهاء(WEAVE_ERROR)

إكمال الإعداد

void Finalize(
  WEAVE_ERROR aErr
)

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

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

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

مجانًا

void Free(
  void
)

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

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

GetExchangeCtx

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

أنتج كائن ExchangeContext من Binding.

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

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

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

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

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

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

احرص على إعداد الربط باستخدام رقم تعريف عقدة فقط.

وينتج عن ذلك الربط مع وسيلة النقل التلقائية التي تم ضبطها.

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

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

احرص على إعداد عنصر ربط استنادًا إلى رقم تعريف النظراء وطريقة النقل.

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

Init

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
في حال عدم تحديد الربط بشكل كافٍ.

Init

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
)

الشيك ملزم مجانًا.

"مجاني" في هذا السياق يعني ببساطة "يحتوي على عقدة نظير محددة ID". IsFree() should be thought of as meaning &quot;has had Free() استدعينا البيانات ولم يتم استخدامها منذ ذلك الحين".

التفاصيل
المرتجعات
true إذا كان الربط مجانيًا، وعلى false في الحالات الأخرى.

UncompleteRequest

void UncompleteRequest(
  void
)

يتسبب في أن يكون الربط غير مكتمل.

في الأساس، يكون الملزِم في الحقل "غير مكتملة" بعد استدعاء هذه الطريقة، ولكن، بمهارة أكبر، أي حالة ذات صلة غير مضمنة في الربط نفسه، على سبيل المثال اتصال TCP، فينبغي أيضًا. وقد تحتاج التطبيقات إلى استدعاء UncompleteRequest() كجزء من عملية التنظيف عند الخطأ.

يُرجى الاطّلاع أيضًا على:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

يتسبب في أن يكون الربط غير مكتمل.

في الأساس، يكون الملزِم في الحقل "غير مكتملة" بعد استدعاء هذه الطريقة، ولكن، بمهارة أكبر، أي حالة ذات صلة غير مضمنة في الربط نفسه، على سبيل المثال اتصال TCP، فينبغي أيضًا. وقد تحتاج التطبيقات إلى استدعاء UncompleteRequest() كجزء من عملية التنظيف عند الخطأ.

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

~الترابط

virtual  ~Binding(
  void
)

دالة التلف لكائنات ربط.

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