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
อยู่ระหว่างดําเนินการ
ผู้รับสามารถส่ง ' กําลังดําเนินการ' ซึ่งแสดงข้อความว่าได้รับคําสั่งแล้ว แต่ยังไม่เสร็จสมบูรณ์ เมื่อกรอกเสร็จแล้ว ผู้รับจะส่งการตอบกลับหรือรายงานสถานะ ไม่จําเป็นต้องส่งข้อความ 'กําลังดําเนินการ'
ได้รับรายงานสถานะแล้ว
ใบเสร็จของรายงานสถานะที่รายงานบ่งชี้ว่ามีข้อผิดพลาดในการประมวลผลคําสั่ง สามารถเข้าถึง StatusReport ได้ผ่าน InEventParam
ได้รับการตอบสนองแล้ว
การได้รับการตอบกลับบ่งชี้ว่าผู้รับคําสั่งจัดการคําสั่งสําเร็จ การตอบกลับอาจมีเพย์โหลดหรือไม่ก็ได้ หากการปรับความต้องการต้องการบัฟเฟอร์บัฟเฟอร์ ก็สามารถเรียกใช้ 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:: |
ประเภทสาธารณะ
เรียกกลับเหตุการณ์
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 )