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

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

สรุป

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

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

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

เย็บสัน ลายสาน

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

EventCallback

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

เหตุการณ์ API

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

CommunicationError

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

InProgressReceived

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

StatusReportReceived

การได้รับ Status Report บอกเป็นนัยว่าเกิดข้อผิดพลาดในการประมวลผล 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
)

เริ่มต้น

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
)