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)
|
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 )
เริ่มต้น
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 )