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)
|
Typedefvoid(*
|
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:: |
ข้อมูลที่ผู้รับคำสั่งที่กำหนดเองส่งคืนให้ผู้ส่ง |
nl:: |
ข้อมูลที่ส่งกลับไปยังออบเจ็กต์ CommandSender จากฟังก์ชัน EventCallback |
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 )