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

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

สรุป

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

รายละเอียดของการตรวจสอบคำสั่งยังอยู่ระหว่างดำเนินการ

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

การสานการเชื่อมโยง

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

EventCallback

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

เหตุการณ์ API

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

CommunicationError

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

InProgressReceived

ผู้รับสามารถส่งคำว่า "อยู่ระหว่างดำเนินการ" ที่แสดงว่าได้รับ Command แล้ว แต่ยังไม่เสร็จสมบูรณ์ เมื่อเสร็จแล้ว ผู้รับจะส่ง Response หรือ StatusReport กำลังส่งข้อความว่า "อยู่ระหว่างดำเนินการ" ไม่จำเป็น

StatusReportReceived

ได้รับ StatusReport บ่งบอกว่าเกิดข้อผิดพลาดในการประมวลผล Command สามารถเข้าถึงรายงานสถานะได้ผ่าน InEventParam

ResponseReceived

การได้รับการตอบกลับหมายความว่าผู้รับ Command จัดการ Command เรียบร้อยแล้ว การตอบกลับอาจมีหรือไม่มีเพย์โหลด หากแอปพลิเคชันต้องการเก็บบัฟเฟอร์แพ็กเก็ต แอปพลิเคชันอาจเรียกใช้ 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::SynchronizedTraitState

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

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
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)