nl:: Weave:: الملفات الشخصية:: DataManagement_Current:: Commandsender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
الملخّص
ملاحظة: تلخص هذه الفئة تفاصيل بروتوكولات إرسال الأوامر، وتبسيط آليات التطبيقات المعنية. يوفر التطبيق PacketBuffer الذي يحتوي على حمولة الأمر، بالإضافة إلى مجموعة اختيارية من الوسيطات التي تغيّر محتوى عنوان الأمر بالإضافة إلى سلوك الأمر. تكون الأداة المساعدة لمعالجة هذا الأمر حول معالجة الأوامر محدودة حقًا، ويرجع ذلك في الأساس إلى التعقيد/المرونة المستخدمة في التحقق من الأمان وتسلسل البيانات/إزالة الرقم التسلسلي.
لا تزال تفاصيل التحقّق من صحة الأوامر نهائية.
تساعد هذه الفئة أيضًا التطبيقات على استنتاج ما إذا كانت البيانات ضمن TraitDataSink مرتبطة بآثار جانبية الإرسال (استنادًا إلى الإصدار المُقدّم في استجابة الأمر). يتحمل التطبيق مسؤولية إدارة مساحة التخزين لهذا العنصر.
دمج الربط
يمكن ربط كائن من هذه الفئة بربط Weave، والذي يكون هو الربط التلقائي لاستخدامه في إرسال الأوامر. قد يوفّر المستخدم أيضًا ربط لكل استدعاء لـ SendCommand()، ما يؤدي إلى إلغاء الربط التلقائي. لا يلزم توفير ربط تلقائي، ولكن يجب إعداد أي ربط مقدَّم إلى Commandsender تلقائيًا.
معاودة الاتصال بالحدث
يجب على المستخدم تحديد دالة من هذا النوع إذا كان يريد أن يتم تحديثها عن الأحداث التي تحدث بعد إرسال الأمر (اطّلِع على &سجلّات أحداث واجهة برمجة التطبيقات"، أدناه). ويمكن إدخال قيمة فارغة إذا لم يكن المستخدم مهتمًا بما يحدث بعد إرسال الأمر.
أحداث واجهة برمجة التطبيقات
الأحداث التالية هي النتائج المحتملة بعد إرسال أمر:
خطأ في الاتصال
حدث خطأ أثناء إنشاء الأمر أو إرساله، أو أثناء انتظار الرد. ومن أمثلة الأخطاء التي قد تحدث أثناء انتظار الرد أخطاء رئيسية أو إغلاق غير متوقع لاتصال. سيتم تضمين سبب الخطأ في الوسيطة InEventParam لمعالج الحدث EventCallback.
قيد التقدم
يمكن للمُستلِم إرسال رسالة '؛ قيد التقدم'؛ والتي تشير إلى أنّه تم استلام الأمر، ولكن لم تكتمل حتى الآن. بعد الانتهاء، سيرسل المستلم ردًا أو تقرير الحالة. إرسال 'قيد التقدم&39; غير مطلوب.
تقرير الحالة المستلم
يشير استلام تقرير الحالة إلى حدوث خطأ أثناء معالجة Command. يمكن الوصول إلى تقرير الحالة من خلال InEventParam.
تمّ تلقي ردّ.
يعني تلقّي استجابة أنّ مستلم 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:: |
الأنواع المتاحة للجميع
معاودة الاتصال بالحدث
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
نوع الحدث
EventType
السمات العامة
mAppState
void * mAppState = NULL
mSyncronizeTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
الدوال الثابتة العامة
مؤشر الحدث التلقائي
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 )