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