nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
ملخّص
ملاحظة: تضم هذه الفئة تفاصيل بروتوكول إرسال الأوامر، ما يبسّط الآليات المستخدمة في التطبيقات. يوفر التطبيق PacketBuffer يحتوي على حمولة الأمر بالإضافة إلى مجموعة اختيارية من الوسيطات التي تغير محتويات رأس الأمر وطريقته في عملها. إنّ فائدة هذا البرنامج في معالجة الأوامر محدودة للغاية، ويرجع ذلك في الغالب إلى التعقيد/المرونة التي ينطوي عليها التحقّق من الأمان وتسلسل البيانات أو إلغاء التسلسل.
لا تزال تفاصيل التحقّق من صحة الأوامر تُحدَّد لاحقًا.
تساعد هذه الفئة أيضًا التطبيقات في استنتاج ما إذا كانت البيانات المتوفّرة في TraitDataSink المرتبطة قد التزمت بالآثار الجانبية للأمر (بناءً على الإصدار الوارد في استجابة الأمر). ويكون التطبيق مسؤولاً عن إدارة تخزين هذا الكائن.
ربط النسج
يمكن بدء كائن من هذه الفئة باستخدام ربط Weave، والذي سيكون بمثابة الربط التلقائي لاستخدامه لإرسال الأوامر. يمكن للمستخدم أيضًا تقديم الربط لكل استدعاء لـ SendCommand() ، والذي سيلغي الربط التلقائي. ليس من الضروري توفير ربط تلقائي، ولكن يجب أن يتم مسبقًا إعداد أي ربط يتم تقديمه إلى CommandSender.
EventCallback
يجب أن يحدّد المستخدِم دالة من هذا النوع إذا كان يريد أن يتمّ تعديلها بشأن الأحداث التي تحدث بعد إرسال الأمر (اطّلِع على "أحداث واجهة برمجة التطبيقات" أدناه). يمكن أن تكون هذه القيمة فارغة إذا كان المستخدم لا يهتم بما يحدث بعد إرسال الأمر.
أحداث واجهة برمجة التطبيقات
الأحداث التالية هي النتائج المحتمَلة بعد إرسال طلب:
CommunicationError
حدث خطأ أثناء إنشاء الأمر أو إرساله أو أثناء انتظار الردّ. من الأمثلة على الأخطاء التي يمكن أن تحدث أثناء انتظار استجابة الأخطاء الرئيسية أو الإغلاق غير المتوقع للاتصال. سيتم تضمين سبب الخطأ في الوسيطة InEventParam إلى معالج EventCallback.
InProgressReceived
يمكن للمُستلِم إرسال رسالة "قيد المعالجة" تشير إلى تلقّي الأمر، ولكن لم يتم إكماله بعد. بعد الانتهاء، سيرسل المستلم ردًا أو تقرير حالة. إرسال رسالة "قيد التقدم" ليس مطلوبًا.
StatusReportReceived
يشير استلام تقرير الحالة إلى حدوث خطأ أثناء معالجة Command. يمكن الوصول إلى "تقرير الحالة" من خلال InEventParam.
ResponseReceived
يعني تلقّي استجابة أنّ مستلم Command قد عالج الأمر Command بنجاح. قد تحتوي الاستجابة على حمولة أو قد لا تحتوي عليها. إذا كان التطبيق يريد الاحتفاظ بالمخزن المؤقت للحزمة، قد يستدعي ExchangeContext::AddRef() لزيادة عدد المراجع.
الأنواع العلنية |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
تعداد |
السمات العامة |
|
---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
الدوال الثابتة العامة |
|
---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
الدوال العامة |
|
---|---|
Close(bool aAbortNow)
|
void
|
Init(nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams)
|
|
SetSynchronizedTraitState(SynchronizedTraitState *aTraitState)
|
void
|
الهياكل |
|
---|---|
nl:: |
البيانات التي يعرضها مُستلِم الأمر المخصّص إلى المُرسِل. |
nl:: |
يتم إرجاع البيانات مرة أخرى إلى كائن CommandSender من دالة EventCallback. |
nl:: |
تحتوي على الوسيطات التي يتم تمريرها إلى SendCommand(). |
nl:: |
الأنواع العلنية
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
السمات العامة
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
الدوال الثابتة العامة
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
الدوال العامة
إغلاق
void Close( bool aAbortNow )
إنت
WEAVE_ERROR Init( nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams )