nl:: Weave:: Profiles:: Echo_Next:: WeaveEchoClient
#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>
Provides the ability to send Weave EchoRequest messages to a peer node and receive the corresponding EchoResponse messages.
ملخّص
تنفِّذ فئة WeaveEchoClient جانب البدء من بروتوكول Weave Echo. على غرار بروتوكول فحص اتصال بروتوكول رسائل التحكّم في الإنترنت (ICMP)، يمكن استخدام بروتوكول Weave Echo لاختبار مدى حيوية عقدة Weave وإمكانية الوصول إليها.
يمكن للتطبيقات استخدام الفئة WeaveEchoClient لإرسال رسائل EchoRequest لمرة واحدة أو بشكل متكرر إلى عقدة مثلى يحددها كائن Binding. توجد فئة مقابلة للاستجابة لطلبات الارتداد (راجِع WeaveEchoServer).
ربط العملاء
يأخذ WeaveEchoClient كائن ربط Weave الذي يُستخدم لتحديد وإنشاء اتصال مع المستلم المقصود لطلبات الارتداد. يمكن أن يتم ضبط الربط وإعداده من خلال التطبيق قبل إعداد الكائن WeaveEchoClient أو إذا كان من الممكن تركه غير جاهز، وفي هذه الحالة يطلب WeaveEchoClient إعداد الربط عند الطلب (يمكنك الاطّلاع على Binding::RequestPrepare() للحصول على التفاصيل).
وسيتم أيضًا طلب إعداد الربط عند الطلب في حال تعذّر إكماله بعد الدخول إلى حالة "جاهز".
وضع تكرار الإرسال
يمكن استخدام الطريقة SendRepeating() لوضع WeaveEchoClient في وضع SendRepeating. في هذا الوضع، يرسل كائن العميل تسلسلاً متكررًا لرسائل EchoRequest إلى النظير في فاصل تم إعداده. يمكن إلغاء وضع تكرار الإرسال من خلال استدعاء الإجراء Stop().
البث المتعدد والبث
يمكن استخدام كائن WeaveEchoClient لإرسال طلبات EchoRequests إلى عدة مستلمين في وقت واحد من خلال تهيئة الكائن Binding باستخدام عنوان البث المتعدد IPv6 المناسب أو عنوان بث الشبكة المحلية لبروتوكول IPv4 (255.255.255.255). عندما يرصد كائن WeaveEchoClient عنوان بث متعدد أو نظير بث، يدخل تلقائيًا في وضع "الاستجابة المتعددة" عند إرسال EchoRequest.
في هذا الوضع، يستمر الكائن في الاستماع إلى جميع رسائل EchoResponse الواردة التي تصل إلى نفس التبادل وتسليمه. يظل العنصر في وضع "الاستجابة المتعددة" حتى: 1) يستدعي التطبيق Stop() أو Send()، أو 2) في وضع SendRepeating، ويحين وقت إرسال طلب آخر، أو 3) لا يتم تلقّي أي رد وتنتهي مهلة الاستلام.
أحداث واجهة برمجة التطبيقات
خلال فترة تشغيل الكائن WeaveEchoClient، سيتم استدعاء التطبيق لطلب إجراءات محدّدة أو عرض إشعارات بالأحداث المهمة. يتم إجراء طلبات الأحداث من واجهة برمجة التطبيقات هذه إلى دالة معاودة الاتصال التي تم ضبطها حاليًا في كائن العميل. باستثناء ما يتم ذكره، يمكن للتطبيقات تغيير حالة العميل أثناء استدعاء الحدث. ويُستثنى من ذلك الطريقة العامة للكائن Launchdown()، والتي قد لا يتم استدعاؤها أبدًا أثناء عملية معاودة الاتصال.
يتم تحديد أحداث واجهة برمجة التطبيقات التالية:
PreparePayload
إنّ WeaveEchoClient على وشك إنشاء رسالة EchoRequest ويطلب من التطبيق توفير حمولة. إذا رغب أحد التطبيقات، فقد يعرض حزمة PacketBuffer جديدة تحتوي على بيانات الحمولة. إذا لم يتعامل التطبيق مع هذا الحدث، سيتم تلقائيًا إرسال EchoRequest مع حمولة بيانات ذات طول صفري. قد لا يغيّر التطبيق حالة WeaveEchoClient أثناء معاودة الاتصال هذه.
RequestSent
تم إرسال رسالة EchoRequest إلى التطبيق المشابه.
ResponseReceived
تم تلقي رسالة EchoResponse من أحد الزملاء. تحتوي وسيطات الحدث على حمولة الاستجابة والمعلومات الوصفية حول رسالة الاستجابة.
CommunicationError
حدث خطأ أثناء إنشاء EchoRequest أو إرساله، أو أثناء انتظار رد. ومن الأمثلة على الأخطاء التي يمكن أن تحدث أثناء انتظار الرد: الأخطاء الرئيسية أو الإغلاق غير المتوقّع للاتصال. تحتوي وسيطات الحدث على سبب الخطأ.
ResponseTimeout
لم يتم تلقي استجابة EchoResponse في الوقت المخصص. يتم التحكّم في مهلة الاستجابة من خلال السمة defaultResponseTimeout في العنصر Binding.
RequestAborted
تم إلغاء عملية Echo Exchange قيد التقدم بسبب تقديم طلب لإرسال EchoRequest آخر قبل تلقي رد على الرسالة السابقة. وقد تنشأ هذه المشكلة في وضع SendRepeating عند حلول الوقت لإرسال EchoRequest التالي. قد يحدث ذلك أيضًا إذا كان التطبيق يستدعي Send() بعد إرسال EchoRequest ولكن قبل تلقي أي استجابة.
عندما يكون العنصر في وضع "الاستجابة المتعددة"، يتم منع الحدث في حال تلقّي رسالة EchoResponse واحدة على الأقل.
الشركات المصنّعة والمُصنّعة |
|
---|---|
WeaveEchoClient(void)
|
الأنواع العامة |
|
---|---|
EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
|
تعريف الكتابةvoid(*
|
EventType{
|
تعداد |
State{
|
تعداد |
السمات العامة |
|
---|---|
AppState
|
void *
يشير هذا المصطلح إلى مؤشر للبيانات الخاصة بالتطبيقات.
|
وظائف عامة |
|
---|---|
GetBinding(void) const
|
Binding *
تعرض مؤشرًا إلى الكائن Binding المرتبط بـ WeaveEchoClient.
|
GetEventCallback(void) const
|
EventCallback
تعرض مؤشرًا إلى دالة استدعاء حدث واجهة برمجة التطبيقات التي تم ضبطها حاليًا على الكائن WeaveEchoClient.
|
GetState(void) const
|
استرِد الحالة الحالية للعنصر WeaveEchoClient.
|
Init(Binding *binding, EventCallback eventCallback, void *appState)
|
إعداد كائن WeaveEchoClient.
|
IsSendRrepeating() const
|
bool
تعرض القيمة true إذا كان الكائن WeaveEchoClient في وضع تكرار الإرسال حاليًا.
|
RequestInProgress() const
|
bool
تعرض القيمة "صحيح" إذا تم إرسال EchoRequest وكان الكائن WeaveEchoClient بانتظار الرد.
|
Send(void)
|
أرسِل رسالة EchoRequest إلى الزميل.
|
Send(PacketBuffer *payloadBuf)
|
أرسل رسالة EchoRequest إلى التطبيق المشابه مع حمولة محددة.
|
SendRepeating(uint32_t sendIntervalMS)
|
بدء إرسال تسلسل متكرر لرسائل EchoRequest إلى النظير.
|
SetEventCallback(EventCallback eventCallback)
|
void
تضبط هذه السياسة دالة استدعاء حدث واجهة برمجة التطبيقات في الكائن WeaveEchoClient.
|
Shutdown(void)
|
void
أوقِف كائن WeaveEchoClient الذي تم إعداده سابقًا.
|
Stop(void)
|
void
يؤدي هذا الخيار إلى إيقاف أي تبادل للصدى قيد التقدم وإلغاء وضع تكرار الإرسال.
|
الدوال الثابتة العامة |
|
---|---|
DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
|
void
المعالج التلقائي لأحداث واجهة برمجة التطبيقات WeaveEchoClient
|
بُنى |
|
---|---|
nl:: |
أدخِل المَعلمات في حدث واجهة برمجة التطبيقات WeaveEchoClient. |
nl:: |
إخراج المَعلمات لحدث واجهة برمجة التطبيقات WeaveEchoClient |
الأنواع العامة
EventCallback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
EventType
EventType
أماكن إقامة | |
---|---|
kEvent_CommunicationError
|
حدث خطأ في الاتصال أثناء إرسال EchoRequest أو انتظار الرد. |
kEvent_DefaultCheck
|
يتم استخدامه للتأكّد من صحة المعالجة التلقائية للأحداث في التطبيق. |
kEvent_PreparePayload
|
ويُطلب من التطبيق تحضير حمولة البيانات لطلب Echo. |
kEvent_RequestAborted
|
تم إلغاء عملية تبادل Echo Exchange قيد التقدم بسبب تقديم طلب لبدء تبادل آخر. |
kEvent_RequestSent
|
تم إرسال رسالة EchoRequest إلى التطبيق المشابه. |
kEvent_ResponseReceived
|
تم تلقي رسالة EchoResponse من أحد الزملاء. |
kEvent_ResponseTimeout
|
لم يتم تلقي استجابة EchoResponse في الوقت المخصص. |
الحالة
State
أماكن إقامة | |
---|---|
kState_Idle
|
كائن العميل غير نشِط. |
kState_NotInitialized
|
لم يتم إعداد كائن العميل. |
kState_PreparingBinding
|
عنصر العميل في انتظار أن يصبح الربط جاهزًا. |
kState_RequestInProgress
|
تم إرسال رسالة EchoRequest وينتظر كائن العميل ردًا. |
kState_WaitingToSend
|
تم استدعاء SendRepeating() وينتظر كائن العميل المرة القادمة لإرسال EchoRequest. |
السمات العامة
AppState
void * AppState
يشير هذا المصطلح إلى مؤشر للبيانات الخاصة بالتطبيقات.
وظائف عامة
GetBinding
Binding * GetBinding( void ) const
تعرض مؤشرًا إلى الكائن Binding المرتبط بـ WeaveEchoClient.
GetEventCallback
EventCallback GetEventCallback( void ) const
تعرض مؤشرًا إلى دالة استدعاء حدث واجهة برمجة التطبيقات التي تم ضبطها حاليًا على الكائن WeaveEchoClient.
Init
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
إعداد كائن WeaveEchoClient.
عليك إعداد كائن WeaveEchoClient استعدادًا لإرسال رسائل صدى إلى أحد التطبيقات المشابهة.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
IsSendRrepeating
bool IsSendRrepeating() const
تعرض القيمة true إذا كان الكائن WeaveEchoClient في وضع تكرار الإرسال حاليًا.
RequestInProgress
bool RequestInProgress() const
تعرض القيمة "صحيح" إذا تم إرسال EchoRequest وكان الكائن WeaveEchoClient بانتظار الرد.
إرسال
WEAVE_ERROR Send( void )
أرسِل رسالة EchoRequest إلى الزميل.
تبدأ هذه الطريقة عملية إرسال رسالة EchoRequest إلى عقدة النظير. في حال تلقّي رسالة EchoResponse المقابلة، سيتم تسليمها إلى التطبيق من خلال حدث ResponseReceived API.
عند إنشاء رسالة EchoRequest، يرسل WeaveEchoClient طلبًا إلى التطبيق، من خلال حدث PreparePayload API، لإعداد حمولة الرسالة.
إذا لم يكن الكائن Binding في حالة جاهز عند استدعاء هذه الطريقة، سيتم إرسال طلب إلى طريقة Binding::RequestPrepare() لبدء الإعداد عند الطلب. ستتم بعد ذلك وضع عملية الإرسال في قائمة الانتظار حتى تكتمل هذه العملية. يبلغ الحد الأقصى لعمق قائمة الانتظار هذه واحدًا. وبالتالي، سيؤدي أي استدعاء إلى Send() أثناء وجود عملية إرسال سابقة في قائمة الانتظار إلى إرسال طلب EchoRequest واحد فقط.
إنّ استدعاء الدالة Send() عندما يكون WeaveEchoClient في وضع التكرار (مثلاً بسبب استدعاء سابق إلى SendRepeating()) يؤدي إلى تسريع دورة الإرسال وإعادة ضبطها ولكنه لا يخرج WeaveEchoClient من وضع تكرار الإرسال.
إرسال
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
أرسل رسالة EchoRequest إلى التطبيق المشابه مع حمولة محددة.
تبدأ هذه الطريقة عملية إرسال رسالة EchoRequest إلى عقدة النظير. سيتم إرسال محتوى المخزن المؤقت لحمولة البيانات إلى البيانات المشابهة باعتباره حمولة رسالة EchoRequest. في حال تلقّي رسالة EchoResponse المقابلة، سيتم تسليمها إلى التطبيق من خلال حدث ResponseReceived API.
عند طلب هذه الطريقة، تنتقل ملكية المخزن المؤقت للحمولة المقدَّم إلى الكائن WeaveEchoClient الذي يتحمل مسؤولية تحريره. وينطبق ذلك بغض النظر عما إذا كانت الطريقة قد اكتملت بنجاح أم مع وجود خطأ.
إذا لم يكن الكائن Binding في حالة جاهز عند استدعاء هذه الطريقة، سيتم إرسال طلب إلى طريقة Binding::RequestPrepare() لبدء الإعداد عند الطلب. ستتم بعد ذلك وضع عملية الإرسال في قائمة الانتظار حتى تكتمل هذه العملية. يبلغ الحد الأقصى لعمق قائمة الانتظار هذه واحدًا. وبالتالي، سيؤدي أي استدعاء إلى Send() أثناء وجود عملية إرسال سابقة في قائمة الانتظار إلى إرسال طلب EchoRequest واحد فقط.
إنّ استدعاء الدالة Send() عندما يكون WeaveEchoClient في وضع التكرار (مثلاً بسبب استدعاء سابق إلى SendRepeating()) يؤدي إلى تسريع دورة الإرسال وإعادة ضبطها ولكنه لا يخرج WeaveEchoClient من وضع تكرار الإرسال.
التفاصيل | |||
---|---|---|---|
المعلمات |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
بدء إرسال تسلسل متكرر لرسائل EchoRequest إلى النظير.
تبدأ هذه الطريقة عملية متكررة لإرسال رسائل EchoRequest إلى النظير. عند تلقّي رسائل EchoResponse، يتم إرسالها إلى التطبيق من خلال حدث ResponseReceived API.
عند استدعاء الدالة SendRepeating()، تدخل دالة WeaveEchoClient في وضع تكرار الإرسال حيث يتم استدعاء الإجراء Stop() أو حدوث خطأ Binding. ينتج عن استدعاء SendRepeating() عدة مرات تأثير إعادة ضبط دورة الإرسال وتعديل الفاصل الزمني.
يحدث الإرسال الأولي للتسلسل عند استدعاء SendRepeating() أو عندما يصبح Binding جاهزًا بعد استدعاء SendRepeating() (انظر أدناه). تحدث عمليات الإرسال اللاحقة بعد ذلك خلال الفاصل الزمني المحدد.
في كل مرة يتم فيها إرسال رسالة، يرسل WeaveEchoClient طلبًا إلى التطبيق من خلال حدث PreparePayload API لإعداد حمولة الرسالة.
إذا لم يكن الكائن Binding في حالة "جاهز" عندما يحين وقت إرسال الرسالة، سيتم إرسال طلب إلى طريقة Binding::RequestPrepare() لبدء الإعداد عند الطلب. وسيتم إيقاف أي عمليات إرسال رسائل متكررة أخرى مؤقتًا إلى أن تكتمل هذه العملية. سيؤدي تعذّر إعداد الربط عند الطلب إلى خروج WeaveEchoClient من وضع تكرار الإرسال.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
تضبط هذه السياسة دالة استدعاء حدث واجهة برمجة التطبيقات في الكائن WeaveEchoClient.
إيقاف التشغيل
void Shutdown( void )
أوقِف كائن WeaveEchoClient الذي تم إعداده سابقًا.
تجدر الإشارة إلى أنّه لا يمكن استدعاء هذه الطريقة إلا إذا تم استدعاء الإجراء Init() من قبل.
إيقاف
void Stop( void )
يؤدي هذا الخيار إلى إيقاف أي تبادل للصدى قيد التقدم وإلغاء وضع تكرار الإرسال.
WeaveEchoClient
WeaveEchoClient( void )
الدوال الثابتة العامة
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
المعالج التلقائي لأحداث واجهة برمجة التطبيقات WeaveEchoClient
ويجب أن تطلب التطبيقات هذه الطريقة لأي أحداث واجهة برمجة تطبيقات لا يمكنها التعرّف عليها أو معالجتها. يجب أن تكون المَعلمات المقدَّمة مطابقة لتلك التي يتم تمريرها من خلال كائن العميل إلى دالة معالِج الحدث في التطبيق.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
|