nl:: بافت:: پروفایل ها:: DataManagement_Current:: CommandSender

#include <src/lib/profiles/data-management/Current/CommandSender.h>

خلاصه

توجه: این کلاس جزئیات پروتکل ارسال دستورات را محصور می کند و مکانیک درگیر برای برنامه ها را ساده می کند. این برنامه یک PacketBuffer حاوی بار فرمان و همچنین مجموعه ای اختیاری از آرگومان ها را ارائه می دهد که محتویات سربرگ فرمان و همچنین رفتار فرمان را تغییر می دهد. کاربرد این پوشش در مورد مدیریت فرمان در واقع محدود است، عمدتاً به دلیل پیچیدگی/انعطاف پذیری موجود در اعتبار سنجی امنیتی و سریال سازی/سریالی سازی داده ها.

جزئیات برای اعتبار سنجی فرمان هنوز TBD است

این کلاس همچنین به برنامه‌ها کمک می‌کند استنباط کنند که آیا داده‌های موجود در TraitDataSink مرتبط با عوارض جانبی فرمان (بر اساس نسخه ارائه‌شده در پاسخ فرمان) مطابقت دارد یا خیر. برنامه مسئول مدیریت ذخیره سازی آن شی است.

صحافی بافت

یک شی از این کلاس را می توان با یک Weave Binding مقداردهی کرد، که به عنوان Binding پیش فرض برای ارسال دستورات استفاده می شود. کاربر همچنین ممکن است برای هر فراخوانی SendCommand یک Binding ارائه دهد که Binding پیش‌فرض را لغو می‌کند. ارائه یک Binding پیش‌فرض ضروری نیست، با این حال هر اتصال ارائه شده به CommandSender باید از قبل مقداردهی اولیه شده باشد.

رویداد Callback

اگر کاربر بخواهد در مورد رویدادهایی که پس از ارسال فرمان رخ می دهد به روز شود، باید تابعی از این نوع تعریف کند (به «رویدادهای API» در زیر مراجعه کنید). اگر کاربر اهمیتی نداشته باشد که بعد از ارسال دستور چه اتفاقی می افتد، این می تواند NULL باشد.

رویدادهای API

رویدادهای زیر نتایج احتمالی پس از ارسال یک فرمان هستند:

خطای ارتباطی

هنگام شکل‌دهی یا ارسال فرمان ، یا در حین انتظار برای پاسخ، خطایی روی داد. نمونه‌هایی از خطاهایی که می‌توانند در زمان انتظار برای پاسخ رخ دهند، خطاهای کلیدی یا بسته شدن غیرمنتظره اتصال هستند. دلیل خطا در آرگومان InEventParam به کنترل کننده EventCallback وجود دارد.

InProgress Received

گیرنده می تواند پیام "در حال پیشرفت" را ارسال کند که نشان می دهد فرمان دریافت شده است، اما هنوز تکمیل نشده است. پس از تکمیل، گیرنده یک پاسخ یا گزارش وضعیت ارسال می کند. ارسال پیام "در حال انجام" الزامی نیست.

گزارش وضعیت دریافت شد

دریافت StatusReport به این معنی است که در پردازش فرمان خطایی رخ داده است. StatusReport از طریق InEventParam قابل دسترسی است.

پاسخ دریافت شد

دریافت یک پاسخ به این معنی است که گیرنده فرمان فرمان را با موفقیت انجام داده است. پاسخ ممکن است حاوی محموله باشد یا نه. اگر برنامه بخواهد بافر بسته را حفظ کند، ممکن است ExchangeContext::AddRef() را فراخوانی کند تا تعداد ref را افزایش دهد.

انواع عمومی

EventCallback )(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam) typedef
void(*
EventType enum

صفات عمومی

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:: Weave:: پروفایل ها:: DataManagement_Current:: CommandSender:: InEventParam

داده هایی که توسط گیرنده فرمان سفارشی به فرستنده بازگردانده می شود.

nl:: بافت:: پروفایل ها:: DataManagement_Current:: CommandSender:: OutEventParam

داده ها از یک تابع EventCallback به یک شی CommandSender بازگردانده می شوند.

nl:: بافت:: پروفایل ها:: DataManagement_Current:: CommandSender:: SendParams

آرگومان هایی را کپسوله می کند تا به SendCommand() منتقل شوند.

nl:: بافت:: پروفایل ها:: DataManagement_Current:: CommandSender:: SynchronizedTraitState

انواع عمومی

رویداد Callback

void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)

نوع رویداد

 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
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)