nl:: Weave:: Profiles:: Echo_Next:: WeaveEchoClient
#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>
Provides the ability to send Weave EchoRequest messages to a peer node and receive the corresponding EchoResponse messages.
สรุป
คลาส WeaveEchoClient จะใช้ฝั่งผู้เริ่มของโปรโตคอล Weave Echo โปรโตคอล Weave Echo ใช้ทดสอบการทำงานและความสามารถในการเข้าถึงของโหนด Weave คล้ายกับโปรโตคอล ping ของ ICMP ได้
แอปพลิเคชันจะใช้คลาส WeaveEchoClient เพื่อส่งข้อความ EchoRequest แบบครั้งเดียวหรือซ้ำไปยังโหนดเพียร์ที่ระบุโดยออบเจ็กต์ Binding ได้ มีคลาสที่สอดคล้องกันสำหรับตอบสนองต่อคำขอเสียงสะท้อน (ดู WeaveEchoServer)
การเชื่อมโยงไคลเอ็นต์
WeaveEchoClient นำออบเจ็กต์ Weave Binding ที่ใช้ระบุและสร้างการสื่อสารกับผู้รับคำขอเสียงสะท้อน แอปพลิเคชันสามารถกำหนดค่าและเตรียม Binding ไว้ให้ก่อนเริ่มต้นออบเจ็กต์ WeaveEchoClient หรือไม่เตรียมการได้ ซึ่งในกรณีนี้ WeaveEchoClient จะขอให้เตรียมการเชื่อมโยงตามคำขอ (ดูรายละเอียดใน Binding::RequestPrepare())
หากมีการเตรียมการการเชื่อมโยงแบบออนดีมานด์ไม่สำเร็จหลังจากเข้าสู่สถานะพร้อมใช้งาน
โหมด SendReturning
คุณสามารถใช้เมธอด SendRepeating() เพื่อทำให้ WeaveEchoClient อยู่ในโหมด SendReturning ในโหมดนี้ ออบเจ็กต์ไคลเอ็นต์จะส่งข้อความ EchoRequest ตามลำดับซ้ำไปยังเพียร์ตามช่วงเวลาที่กำหนดค่าไว้ โหมด SendReturning จะยกเลิกได้โดยเรียกใช้เมธอด Stop()
มัลติแคสต์และประกาศ
คุณสามารถใช้ออบเจ็กต์ WeaveEchoClient เพื่อส่ง EchoRequests ไปยังผู้รับหลายคนพร้อมกันได้โดยกำหนดค่าออบเจ็กต์ Binding โดยใช้ที่อยู่มัลติแคสต์ IPv6 หรือที่อยู่การออกอากาศของเครือข่ายภายในของ IPv4 (255.255.255.255) เมื่อออบเจ็กต์ WeaveEchoClient ตรวจพบที่อยู่เพียร์มัลติแคสต์หรือการออกอากาศ ออบเจ็กต์ดังกล่าวจะเข้าสู่โหมด MultiResponse โดยอัตโนมัติเมื่อส่ง EchoRequest
ในโหมดนี้ ออบเจ็กต์จะยังคงรอฟังและส่งข้อความ EchoResponse ที่เข้ามาใหม่ทั้งหมดซึ่งมาถึงใน Exchange เดียวกัน ออบเจ็กต์จะยังคงอยู่ในโหมด MultiResponse จนกว่าจะดำเนินการดังต่อไปนี้ 1) แอปพลิเคชันเรียกใช้ Stop() หรือ Send() 2) ในโหมด SendReturning ถึงเวลาส่งคำขออีกครั้ง หรือ 3) ไม่มีการได้รับการตอบกลับและการหมดเวลาในการรับหมดอายุ
เหตุการณ์ API
ในระหว่างการทำงาน ออบเจ็กต์ WeaveEchoClient จะเรียกไปยังแอปพลิเคชันเพื่อขอการดำเนินการที่เฉพาะเจาะจงหรือส่งการแจ้งเตือนเหตุการณ์สำคัญ การเรียกเหตุการณ์ API เหล่านี้จะทำไปยังฟังก์ชัน Callback ที่กำหนดค่าไว้ในปัจจุบันในออบเจ็กต์ไคลเอ็นต์ แอปพลิเคชันสามารถเปลี่ยนสถานะของไคลเอ็นต์ในระหว่าง Callback ของเหตุการณ์ได้อย่างอิสระ ยกเว้นในกรณีที่ระบุไว้เป็นอย่างอื่น ข้อยกเว้นโดยรวมอย่างหนึ่งคือเมธอด Shutdown() ของออบเจ็กต์ ซึ่งอาจไม่มีการเรียกใช้ในระหว่าง Callback
กําหนดเหตุการณ์ API ต่อไปนี้
PreparePayload
WeaveEchoClient กำลังจะสร้างข้อความ EchoRequest และขอแอปพลิเคชันเพื่อส่งเพย์โหลด หากแอปพลิเคชันต้องการ แอปพลิเคชันอาจแสดงผล PacketBuffer ใหม่ที่มีข้อมูลเพย์โหลด หากแอปพลิเคชันไม่จัดการเหตุการณ์นี้ ระบบจะส่ง EchoRequest ที่มีเพย์โหลดความยาวเป็น 0 โดยอัตโนมัติ แอปพลิเคชันต้องไม่เปลี่ยนแปลงสถานะของ WeaveEchoClient ในระหว่างการเรียกกลับนี้
RequestSent
ระบบส่งข้อความ EchoRequest ไปยังแอปเทียบเท่าแล้ว
ResponseReceived
แอปเทียบเท่าได้รับข้อความ EchoResponse อาร์กิวเมนต์กับเหตุการณ์จะมีเพย์โหลดการตอบกลับและข้อมูลเมตาเกี่ยวกับข้อความตอบกลับ
CommunicationError
เกิดข้อผิดพลาดขณะสร้างหรือส่ง EchoRequest หรือขณะรอการตอบกลับ ตัวอย่างข้อผิดพลาดที่อาจเกิดขึ้นขณะรอการตอบกลับ ได้แก่ ข้อผิดพลาดที่สำคัญหรือการปิดการเชื่อมต่อโดยไม่คาดคิด อาร์กิวเมนต์กับเหตุการณ์มีเหตุผลของข้อผิดพลาด
ResponseTimeout
ไม่ได้รับ EchoResponse ในเวลาที่กำหนด การหมดเวลาตอบสนองจะควบคุมโดยพร็อพเพอร์ตี้ DefaultResponseTimeout ในออบเจ็กต์ Binding
RequestAborted
การแลกเปลี่ยน Echo ที่กำลังดำเนินการถูกล้มเลิกเนื่องจากมีการส่งคำขอให้ส่ง EchoRequest อีกครั้งก่อนจะได้รับการตอบกลับสำหรับข้อความก่อนหน้า ซึ่งสามารถเกิดขึ้นได้ในโหมด SendReturning เมื่อถึงเวลาส่ง EchoRequest ถัดไป กรณีนี้อาจเกิดขึ้นได้เช่นกันหากแอปพลิเคชันเรียกใช้ Send() หลังจากที่ส่ง EchoRequest ไปแล้ว แต่ก่อนที่จะมีการรับคำตอบ
เมื่อออบเจ็กต์อยู่ในโหมด MultiResponse เหตุการณ์จะถูกระงับหากได้รับข้อความ EchoResponse อย่างน้อย 1 ข้อความ
ผู้ผลิตและผู้ทำลาย |
|
---|---|
WeaveEchoClient(void)
|
ประเภทสาธารณะ |
|
---|---|
EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
|
Typedefvoid(*
|
EventType{
|
enum |
State{
|
enum |
แอตทริบิวต์สาธารณะ |
|
---|---|
AppState
|
void *
ตัวชี้ไปยังข้อมูลเฉพาะแอปพลิเคชัน
|
ฟังก์ชันสาธารณะ |
|
---|---|
GetBinding(void) const
|
Binding *
แสดงผลตัวชี้ไปยังออบเจ็กต์ Binding ที่เชื่อมโยงกับ WeaveEchoClient
|
GetEventCallback(void) const
|
EventCallback
แสดงผลตัวชี้ไปยังฟังก์ชัน Callback ของเหตุการณ์ API ที่กําหนดค่าไว้ในออบเจ็กต์ WeaveEchoClient ในปัจจุบัน
|
GetState(void) const
|
ดึงข้อมูลสถานะปัจจุบันของออบเจ็กต์ WeaveEchoClient
|
Init(Binding *binding, EventCallback eventCallback, void *appState)
|
เริ่มต้นออบเจ็กต์ WeaveEchoClient
|
IsSendRrepeating() const
|
bool
แสดงผลเป็น "จริง" หากออบเจ็กต์ WeaveEchoClient อยู่ในโหมดส่งซ้ำ
|
RequestInProgress() const
|
bool
แสดงค่า "จริง" หากมีการส่ง EchoRequest และออบเจ็กต์ WeaveEchoClient ที่รอการตอบกลับ
|
Send(void)
|
ส่งข้อความ EchoRequest ไปยังแอปเทียบเท่า
|
Send(PacketBuffer *payloadBuf)
|
ส่งข้อความ EchoRequest ไปยังเพียร์พร้อมเพย์โหลดที่ระบุ
|
SendRepeating(uint32_t sendIntervalMS)
|
เริ่มส่งข้อความ EchoRequest ตามลำดับซ้ำไปยังแอปเทียบเท่า
|
SetEventCallback(EventCallback eventCallback)
|
void
ตั้งค่าฟังก์ชัน Callback ของเหตุการณ์ API ในออบเจ็กต์ WeaveEchoClient
|
Shutdown(void)
|
void
ปิดออบเจ็กต์ WeaveEchoClient ที่เริ่มต้นไว้ก่อนหน้านี้
|
Stop(void)
|
void
หยุดการแลกเปลี่ยน Echo ที่กำลังดำเนินการอยู่และยกเลิกโหมดการส่งซ้ำ
|
ฟังก์ชันสาธารณะแบบคงที่ |
|
---|---|
DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
|
void
ตัวแฮนเดิลเริ่มต้นสำหรับเหตุการณ์ API WeaveEchoClient
|
โครงสร้าง |
|
---|---|
nl:: |
ป้อนพารามิเตอร์ไปยังเหตุการณ์ WeaveEchoClient API |
nl:: |
เอาต์พุตพารามิเตอร์ไปยังเหตุการณ์ WeaveEchoClient API |
ประเภทสาธารณะ
EventCallback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
EventType
EventType
พร็อพเพอร์ตี้ | |
---|---|
kEvent_CommunicationError
|
เกิดข้อผิดพลาดด้านการสื่อสารขณะส่ง EchoRequest หรือรอการตอบกลับ |
kEvent_DefaultCheck
|
ใช้เพื่อยืนยันการจัดการเหตุการณ์เริ่มต้นที่ถูกต้องในแอปพลิเคชัน |
kEvent_PreparePayload
|
ขอให้แอปพลิเคชันเตรียมเปย์โหลดสำหรับคำขอเสียงสะท้อน |
kEvent_RequestAborted
|
ระบบล้มเลิกการแลกเปลี่ยน Echo ที่กำลังดำเนินการอยู่เนื่องจากมีการส่งคำขอให้เริ่มการแลกเปลี่ยนอื่น |
kEvent_RequestSent
|
ระบบส่งข้อความ EchoRequest ไปยังแอปเทียบเท่าแล้ว |
kEvent_ResponseReceived
|
แอปเทียบเท่าได้รับข้อความ EchoResponse |
kEvent_ResponseTimeout
|
ไม่ได้รับ EchoResponse ในเวลาที่กำหนด |
รัฐ
State
พร็อพเพอร์ตี้ | |
---|---|
kState_Idle
|
ออบเจ็กต์ไคลเอ็นต์ไม่มีการใช้งาน |
kState_NotInitialized
|
ออบเจ็กต์ไคลเอ็นต์ไม่ได้เริ่มต้น |
kState_PreparingBinding
|
ออบเจ็กต์ไคลเอ็นต์กำลังรอให้การเชื่อมโยงพร้อมใช้งาน |
kState_RequestInProgress
|
ส่งข้อความ EchoRequest แล้วและออบเจ็กต์ไคลเอ็นต์กำลังรอการตอบกลับ |
kState_WaitingToSend
|
เรียกใช้ SendRepeating() แล้ว และออบเจ็กต์ไคลเอ็นต์จะรอการส่ง EchoRequest ในครั้งต่อไป |
แอตทริบิวต์สาธารณะ
AppState
void * AppState
ตัวชี้ไปยังข้อมูลเฉพาะแอปพลิเคชัน
ฟังก์ชันสาธารณะ
GetBinding
Binding * GetBinding( void ) const
แสดงผลตัวชี้ไปยังออบเจ็กต์ Binding ที่เชื่อมโยงกับ WeaveEchoClient
GetEventCallback
EventCallback GetEventCallback( void ) const
แสดงผลตัวชี้ไปยังฟังก์ชัน Callback ของเหตุการณ์ API ที่กําหนดค่าไว้ในออบเจ็กต์ WeaveEchoClient ในปัจจุบัน
Init
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
เริ่มต้นออบเจ็กต์ WeaveEchoClient
เริ่มต้นออบเจ็กต์ WeaveEchoClient เพื่อเตรียมส่งข้อความสะท้อนไปยังแอปเทียบเท่า
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
IsSendRrepeating
bool IsSendRrepeating() const
แสดงผลเป็น "จริง" หากออบเจ็กต์ WeaveEchoClient อยู่ในโหมดส่งซ้ำ
RequestInProgress
bool RequestInProgress() const
แสดงค่า "จริง" หากมีการส่ง EchoRequest และออบเจ็กต์ WeaveEchoClient ที่รอการตอบกลับ
ส่ง
WEAVE_ERROR Send( void )
ส่งข้อความ EchoRequest ไปยังแอปเทียบเท่า
วิธีนี้จะเริ่มกระบวนการส่งข้อความ EchoRequest ไปยังโหนดเพียร์ หากและเมื่อได้รับข้อความ EchoResponse ที่เกี่ยวข้อง ระบบจะส่งข้อความดังกล่าวไปยังแอปพลิเคชันผ่านเหตุการณ์ ResponseReceived API
เมื่อสร้างข้อความ EchoRequest WeaveEchoClient จะส่งคำขอไปยังแอปพลิเคชันผ่านเหตุการณ์ PreparePayload API เพื่อเตรียมเพย์โหลดของข้อความ
หากออบเจ็กต์ Binding ไม่อยู่ในสถานะ Ready เมื่อมีการเรียกใช้เมธอดนี้ ระบบจะส่งคำขอไปยังเมธอด Binding::RequestPrepare() เพื่อเริ่มการเตรียมการตามคำขอ การดำเนินการส่งจะอยู่ในคิวจนกว่ากระบวนการนี้จะเสร็จสมบูรณ์ ความลึกสูงสุดของคิวนี้คือ 1 ดังนั้นการเรียกใช้ Send() ขณะที่มีการส่งก่อนหน้าในคิวจะส่งผลให้ระบบส่ง EchoRequest เพียงครั้งเดียวเท่านั้น
การเรียกใช้ Send() ขณะที่ WeaveEchoClient อยู่ในโหมดส่งซ้ำ (เช่น เนื่องจากการเรียก SendRepeating() ก่อนหน้านี้) จะส่งผลในการเร่งและรีเซ็ตรอบการส่ง แต่จะไม่ทำให้ WeaveEchoClient ออกจากโหมดการส่งซ้ำ
ส่ง
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
ส่งข้อความ EchoRequest ไปยังเพียร์พร้อมเพย์โหลดที่ระบุ
วิธีนี้จะเริ่มกระบวนการส่งข้อความ EchoRequest ไปยังโหนดเพียร์ ระบบจะส่งเนื้อหาของบัฟเฟอร์เพย์โหลดที่ระบุไปยังเพียร์เป็นเพย์โหลดของข้อความ EchoRequest หากและเมื่อได้รับข้อความ EchoResponse ที่เกี่ยวข้อง ระบบจะส่งข้อความดังกล่าวไปยังแอปพลิเคชันผ่านเหตุการณ์ ResponseReceived API
เมื่อเรียกใช้เมธอดนี้ การเป็นเจ้าของบัฟเฟอร์เพย์โหลดที่ระบุจะส่งต่อไปยังออบเจ็กต์ WeaveEchoClient ซึ่งมีหน้าที่เพิ่มพื้นที่ว่าง จะเป็นเช่นนี้เสมอไม่ว่าเมธอดจะเสร็จสมบูรณ์หรือมีข้อผิดพลาดก็ตาม
หากออบเจ็กต์ Binding ไม่อยู่ในสถานะ Ready เมื่อมีการเรียกใช้เมธอดนี้ ระบบจะส่งคำขอไปยังเมธอด Binding::RequestPrepare() เพื่อเริ่มการเตรียมการตามคำขอ การดำเนินการส่งจะอยู่ในคิวจนกว่ากระบวนการนี้จะเสร็จสมบูรณ์ ความลึกสูงสุดของคิวนี้คือ 1 ดังนั้นการเรียกใช้ Send() ขณะที่มีการส่งก่อนหน้าในคิวจะส่งผลให้ระบบส่ง EchoRequest เพียงครั้งเดียวเท่านั้น
การเรียกใช้ Send() ขณะที่ WeaveEchoClient อยู่ในโหมดส่งซ้ำ (เช่น เนื่องจากการเรียก SendRepeating() ก่อนหน้านี้) จะส่งผลในการเร่งและรีเซ็ตรอบการส่ง แต่จะไม่ทำให้ WeaveEchoClient ออกจากโหมดการส่งซ้ำ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
เริ่มส่งข้อความ EchoRequest ตามลำดับซ้ำไปยังแอปเทียบเท่า
วิธีนี้จะเริ่มกระบวนการส่งข้อความ EchoRequest ไปยังแอปเทียบเท่าซ้ำ เนื่องจากได้รับข้อความ EchoResponse จากแอปเทียบเท่าซึ่งส่งไปยังแอปพลิเคชันผ่านเหตุการณ์ ResponseReceived API
เมื่อมีการเรียก SendRepeating() แล้ว WeaveEchoClient จะเข้าสู่โหมดการส่งซ้ำซึ่งจะทำงานอยู่จนกว่าจะมีการเรียก Stop() หรือเกิดข้อผิดพลาด Binding การเรียกใช้ SendRepeating() หลายครั้งจะส่งผลให้เกิดการรีเซ็ตรอบการส่งและอัปเดตช่วงเวลา
การส่งเริ่มต้นของลำดับจะเกิดขึ้นเมื่อมีการเรียกใช้ SendRepeating() หรือเมื่อใดก็ตามที่ Binding พร้อมหลังจากเรียก SendRepeating() (ดูด้านล่าง) การส่งครั้งต่อๆ ไปจะเกิดขึ้นหลังจากช่วงเวลาที่ระบุ
ทุกครั้งที่มีการส่ง WeaveEchoClient จะส่งคำขอไปยังแอปพลิเคชันผ่านเหตุการณ์ PreparePayload API เพื่อเตรียมเพย์โหลดของข้อความ
หากออบเจ็กต์ Binding ไม่อยู่ในสถานะ "พร้อม" เมื่อถึงเวลาส่งข้อความ ระบบจะส่งคำขอไปยังเมธอด Binding::RequestPrepare() เพื่อเริ่มการเตรียมการตามคำขอ การส่งข้อความซ้ำเพิ่มเติมจะหยุดชั่วคราวจนกว่ากระบวนการนี้จะเสร็จสมบูรณ์ หากเกิดความล้มเหลวในการเตรียม Binding แบบออนดีมานด์จะทำให้ WeaveEchoClient ออกจากโหมดการส่งซ้ำ
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
ตั้งค่าฟังก์ชัน Callback ของเหตุการณ์ API ในออบเจ็กต์ WeaveEchoClient
ปิดการทำงาน
void Shutdown( void )
ปิดออบเจ็กต์ WeaveEchoClient ที่เริ่มต้นไว้ก่อนหน้านี้
โปรดทราบว่าจะมีการเรียกเมธอดนี้ก็ต่อเมื่อมีการเรียกเมธอด Init() ไว้ก่อนหน้านี้เท่านั้น
หยุด
void Stop( void )
หยุดการแลกเปลี่ยน Echo ที่กำลังดำเนินการอยู่และยกเลิกโหมดการส่งซ้ำ
WeaveEchoClient
WeaveEchoClient( void )
ฟังก์ชันสาธารณะแบบคงที่
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
ตัวแฮนเดิลเริ่มต้นสำหรับเหตุการณ์ API WeaveEchoClient
แอปพลิเคชันจําเป็นต้องเรียกใช้เมธอดนี้หากมีเหตุการณ์ API ที่ไม่รู้จักหรือจัดการไม่ได้ พารามิเตอร์ที่ระบุต้องเหมือนกับพารามิเตอร์ที่ส่งโดยออบเจ็กต์ไคลเอ็นต์ไปยังฟังก์ชันตัวแฮนเดิลเหตุการณ์ของแอปพลิเคชัน
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|