nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
خلاصه
توجه:این کلاس جزئیات پروتکل ارسال فرمانها را کپسولهسازی میکند و سازوکار مربوط به برنامهها را ساده میکند. برنامه یک PacketBuffer ارائه میدهد که حاوی بار مفید فرمان و همچنین مجموعهای اختیاری از متغیرهای مستقل است که محتوای سرصفحه فرمان و همچنین رفتار فرمان را تغییر میدهد. کاربرد این پوشش در مدیریت فرمان واقعاً محدود است، عمدتاً بهدلیل پیچیدگی/انعطافپذیری موجود در اعتبارسنجی امنیتی و سریالسازی/غیرسریالسازی دادهها.
جزئیات اعتبارسنجی فرمان هنوز مشخص نشده است
این کلاس همچنین به برنامهها کمک میکند تا استنباط کنند که آیا دادههای موجود در TraitDataSink مرتبط به عوارض جانبی فرمان رسیده است یا نه (براساس نسخه ارائهشده در پاسخ فرمان). برنامه مسئول مدیریت فضای ذخیرهسازی آن شیء است.
صحافی بافت
شیء این کلاس را میتوان با Weave Binding مقداردهی اولیه کرد که بهعنوان Binding پیشفرض برای ارسال «فرمانها» استفاده خواهد شد. کاربر همچنین میتواند برای هر فراخوانی SendCommand() یک Binding ارائه دهد که Binding پیشفرض را لغو خواهد کرد. ارائه Binding پیشفرض ضروری نیست، اما هر binding ارائهشده به CommandSender باید ازقبل مقداردهی اولیه شده باشد.
EventCallback
اگر کاربر بخواهد از رویدادهایی که پساز ارسال فرمان اتفاق میافتد مطلع شود، باید تابعی از این نوع تعریف کند (به «رویدادهای API» در زیر مراجعه کنید). اگر برای کاربر مهم نباشد که بعداز ارسال فرمان چه اتفاقی میافتد، این مقدار میتواند NULL باشد.
رویدادهای میانای برنامهسازی کاربردی
رویدادهای زیر نتایج احتمالی پساز ارسال فرمان هستند:
CommunicationError
هنگام تشکیل یا ارسال فرمان، یا هنگام انتظار برای پاسخ، خطایی روی داد. نمونههایی از خطاهایی که ممکن است هنگام انتظار برای پاسخ رخ دهد، خطاهای کلیدی یا بسته شدن غیرمنتظره اتصال است. دلیل خطا در آرگومان InEventParam برای کنترلکننده EventCallback گنجانده خواهد شد.
InProgressReceived
گیرنده میتواند پیام «درحال انجام» ارسال کند که نشان میدهد فرمان دریافت شده است اما هنوز تکمیل نشده است. پساز تکمیل، گیرنده Response یا StatusReport ارسال خواهد کرد. ارسال پیام «درحال انجام» الزامی نیست.
StatusReportReceived
دریافت StatusReport به این معنی است که خطایی در پردازش Command وجود داشته است. میتوان ازطریق InEventParam به StatusReport دسترسی پیدا کرد.
ResponseReceived
دریافت «پاسخ» بهمعنای آن است که گیرنده فرمان، فرمان را باموفقیت انجام داده است. «پاسخ» ممکن است حاوی بار داده باشد یا نباشد. اگر برنامه بخواهد میانگیر بسته را نگه دارد، میتواند 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:: |
دادهها از تابع EventCallback به شیء CommandSender برگردانده شد. |
|
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 )