nl::Weave::โปรไฟล์::DataManagement_Current::CommandSender

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

สรุป

หมายเหตุ: คลาสนี้จะสรุปรายละเอียดโปรโตคอลของการส่งคําสั่ง เพื่อลดความซับซ้อนของกลไกที่เกี่ยวข้องกับแอปพลิเคชัน แอปพลิเคชันนี้มี PacketBuffer ที่มีเพย์โหลดของคําสั่ง รวมถึงชุดอาร์กิวเมนต์ที่ไม่บังคับซึ่งจะปรับเปลี่ยนเนื้อหาของส่วนหัวคําสั่งและลักษณะการทํางานของคําสั่ง ยูทิลิตีของ Wrapper นี้เกี่ยวกับการจัดการคําสั่งนั้นมีจํากัด สาเหตุหลักคือมีความซับซ้อน/ความยืดหยุ่นที่เกี่ยวข้องกับการตรวจสอบความปลอดภัยและการทําให้ข้อมูลเป็นลําดับ/การเรียงอันดับ

รายละเอียดสําหรับการตรวจสอบคําสั่งยังคงเป็น TBD

คลาสนี้ยังช่วยในการอนุมานข้อมูลได้อีกด้วยหากข้อมูลภายใน TraitDataSink ที่เกี่ยวข้องเป็นไปตามผลข้างเคียงของคําสั่ง (ตามเวอร์ชันที่ระบุไว้ในการตอบกลับคําสั่ง) แอปพลิเคชันจะทําหน้าที่จัดการพื้นที่เก็บข้อมูลของออบเจ็กต์นั้น

การเย็บการเชื่อมโยง

ออบเจ็กต์ของคลาสนี้จะเริ่มเชื่อมโยงกับ Binding ที่ทอได้ ซึ่งจะทําหน้าที่เป็นการเชื่อมโยงเริ่มต้นเพื่อใช้ส่งคําสั่ง ผู้ใช้ยังให้การเชื่อมโยงกับการเรียกใช้ SendCommand() แต่ละครั้งได้ด้วย ซึ่งจะลบล้างการเชื่อมโยงเริ่มต้น ไม่จําเป็นต้องระบุ Binding เริ่มต้น แต่จะต้องเริ่มผูกกับ CommandSender อยู่แล้ว

เรียกกลับเหตุการณ์

ผู้ใช้ต้องกําหนดฟังก์ชันประเภทนี้หากต้องการอัปเดตเกี่ยวกับเหตุการณ์ที่เกิดขึ้นหลังจากส่งคําสั่ง (ดู "API เหตุการณ์" ด้านล่าง) ซึ่งอาจเป็นค่า Null หากผู้ใช้ไม่สนใจสิ่งที่จะเกิดขึ้นหลังจากส่งคําสั่งแล้ว

เหตุการณ์ API

เหตุการณ์ต่อไปนี้คือผลลัพธ์ที่เป็นไปได้หลังจากส่งคําสั่ง

ข้อผิดพลาดในการสื่อสาร

เกิดข้อผิดพลาดขณะสร้างหรือส่ง Command หรือขณะรอการตอบกลับ ตัวอย่างข้อผิดพลาดที่อาจเกิดขึ้นขณะรอการตอบกลับ ได้แก่ ข้อผิดพลาดหลักหรือการเชื่อมต่อที่ไม่คาดคิด เหตุผลของข้อผิดพลาดจะอยู่ในอาร์กิวเมนต์ InEventParam ไปยังเครื่องจัดการ EventCallback

อยู่ระหว่างดําเนินการ

ผู้รับสามารถส่ง &#39 กําลังดําเนินการ&#39 ซึ่งแสดงข้อความว่าได้รับคําสั่งแล้ว แต่ยังไม่เสร็จสมบูรณ์ เมื่อกรอกเสร็จแล้ว ผู้รับจะส่งการตอบกลับหรือรายงานสถานะ ไม่จําเป็นต้องส่งข้อความ 'กําลังดําเนินการ'

ได้รับรายงานสถานะแล้ว

ใบเสร็จของรายงานสถานะที่รายงานบ่งชี้ว่ามีข้อผิดพลาดในการประมวลผลคําสั่ง สามารถเข้าถึง StatusReport ได้ผ่าน InEventParam

ได้รับการตอบสนองแล้ว

การได้รับการตอบกลับบ่งชี้ว่าผู้รับคําสั่งจัดการคําสั่งสําเร็จ การตอบกลับอาจมีเพย์โหลดหรือไม่ก็ได้ หากการปรับความต้องการต้องการบัฟเฟอร์บัฟเฟอร์ ก็สามารถเรียกใช้ ExchangeContext::AddRef() เพื่อเพิ่มจํานวนการอ้างอิง

ประเภทสาธารณะ

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::Profiles::DataManagement_Current::CommandSender::InEventParam

ข้อมูลที่ส่งกลับไปยังผู้รับโดยคําสั่งที่กําหนดเอง

nl::Weave::Profiles::DataManagement_Current::CommandSender::OutEventParam

ข้อมูลกลับไปยังออบเจ็กต์ CommandSender จากฟังก์ชัน EventCallback

nl::Weave::Profiles::DataManagement_Current::CommandSender::SendParams

สรุปอาร์กิวเมนต์ที่จะส่งไปยัง SendCommand()

nl::Weave::Profiles::DataManagement_Current::CommandSender::SyncedTraitState

ประเภทสาธารณะ

เรียกกลับเหตุการณ์

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

ประเภทเหตุการณ์

 EventType

แอตทริบิวต์สาธารณะ

สถานะแอป

void * mAppState = NULL

สถานะการซิงค์ของ mSyncronized

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
)

ส่งคําสั่ง

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  ResourceIdentifier & aResourceId,
  uint32_t aProfileId,
  uint32_t aCommandType
)

ส่งคําสั่ง

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  SendParams & aSendParams
)

กําหนดสถานะการซิงค์

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)