nl:: Weave:: Profiles:: DataManagement_Legacy:: Binding
#include <src/lib/profiles/data-management/Legacy/Binding.h>
คลาส การเชื่อมโยง จะจัดการสถานะการสื่อสารในนามของเอนทิตีของแอปพลิเคชันโดยใช้ Weave
สรุป
เมื่อแอปพลิเคชันต้องการใช้ Weave เพื่อสื่อสารกับเอนทิตีระยะไกล จะมีตัวเลือกมากมายให้เลือกใช้ คลาส การเชื่อมโยง จะปะปนกับตัวเลือกเหล่านี้และจัดเรียงตัวเลือกในลักษณะที่ว่า "สิ่งที่ง่าย" จะเป็นเรื่องง่าย และอย่างน้อยก็ "สิ่งที่ยากกว่าจะเลื่อนได้" ตัวเลือกที่ครอบคลุมมีดังนี้
- การสื่อสาร UDP แบบ Unicast กับโหนดเพียร์ที่รู้จัก
- การออกอากาศ UDP ด้วยโหนด "ใดๆ"
- การสื่อสาร WRMP แบบยูนิแคสต์กับโหนดเพียร์ที่รู้จัก
- การสื่อสาร TCP กับโหนดเพียร์ที่รู้จัก
- การสื่อสาร TCP กับปลายทางบริการที่รู้จักโดยใช้อินสแตนซ์ตัวจัดการบริการในการตั้งค่า
- การสื่อสาร TCP ตามการเชื่อมต่อที่สร้างไว้แล้ว
ผู้ผลิตและผู้ทำลาย |
|
---|---|
Binding(void)
ตัวสร้างเริ่มต้นสำหรับออบเจ็กต์การเชื่อมโยง
|
|
~Binding(void)
ตัวทำลายสำหรับการเชื่อมโยงออบเจ็กต์
|
ประเภทสาธารณะ |
|
---|---|
@165{
|
enum ชุดสถานะออบเจ็กต์การเชื่อมโยง |
แอตทริบิวต์สาธารณะ |
|
---|---|
mAuthMode
|
WeaveAuthMode
โหมดการตรวจสอบสิทธิ์ Weave ที่จะใช้
|
mConnection
|
ตัวชี้ไปยังการเชื่อมต่อ Weave ที่ใช้ในการเชื่อมโยงนี้ในปัจจุบัน
|
mEngine
|
ตัวชี้ไปยังออบเจ็กต์ ProtocolEngine ที่เกี่ยวข้องกับการเชื่อมโยงนี้
|
mPeerNodeId
|
uint64_t
รหัสโหนด 64 บิตของเป้าหมายการเชื่อมโยง
|
mServiceMgr
|
ตัวชี้ไปยังออบเจ็กต์ ServiceManager (ไม่บังคับ) เพื่อใช้ในการเชื่อมโยงนี้ให้เสร็จสมบูรณ์
|
mState
|
uint8_t
สถานะออบเจ็กต์การเชื่อมโยงปัจจุบัน
|
mTransport
|
uint8_t
การขนส่งที่จะใช้ในการเชื่อมโยงนี้ให้เสร็จสมบูรณ์
|
ฟังก์ชันสาธารณะ |
|
---|---|
CompleteConfirm(WeaveConnection *aConnection)
|
void
จัดการการยืนยันคำขอเชื่อมโยง
|
CompleteConfirm(StatusReport & aReport)
|
void
จัดการความล้มเหลวของคำขอเชื่อมโยง
|
CompleteConfirm(void)
|
void
จัดการการยืนยันคำขอเชื่อมโยง
|
CompleteRequest(ProtocolEngine *aEngine)
|
ขอให้ทำการผูกให้เสร็จสิ้น
|
Connect(WeaveConnection *aConnection)
|
ทำการเชื่อมโยง TCP ให้เสร็จสิ้นด้วยการระบุการเชื่อมต่อที่เสร็จสมบูรณ์แล้ว
|
Finalize(void)
|
void
"ไม่สมบูรณ์" การเชื่อมโยงและเพิ่มพื้นที่ว่าง
|
Finalize(WEAVE_ERROR aErr)
|
void
"ไม่สมบูรณ์" การเชื่อมโยงและเพิ่มพื้นที่ว่าง
|
Free(void)
|
void
ล้างสถานะการเชื่อมโยง
|
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
|
สร้างออบเจ็กต์ ExchangeContext จาก Binding
|
IncompleteIndication(StatusReport & aReport)
|
void
จัดการกับความล้มเหลวในการเชื่อมโยง
|
Init(const uint64_t & aPeerNodeId)
|
เริ่มต้นการเชื่อมโยงด้วยรหัสโหนดเพียงอย่างเดียว
|
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
|
เริ่มต้นออบเจ็กต์การเชื่อมโยงตามรหัสเพียร์และการรับส่งข้อมูล
|
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
|
เริ่มต้นออบเจ็กต์การเชื่อมโยงกับปลายทางบริการ
|
Init(WeaveConnection *aConnection)
|
เริ่มต้นออบเจ็กต์ Binding ด้วย WeaveConnection
|
IsComplete(void)
|
bool
ตรวจสอบว่าการเชื่อมโยงเสร็จสมบูรณ์หรือไม่
|
IsFree(void)
|
bool
การตรวจสอบเป็นแบบผูกมัดฟรี
|
UncompleteRequest(void)
|
void
ทำให้การเชื่อมโยงไม่สมบูรณ์
|
UncompleteRequest(WEAVE_ERROR aErr)
|
void
ทำให้การเชื่อมโยงไม่สมบูรณ์
|
ประเภทสาธารณะ
@165
@165
ชุดสถานะออบเจ็กต์การเชื่อมโยง
พร็อพเพอร์ตี้ | |
---|---|
kState_Complete
|
สถานะของการเชื่อมโยงที่สมบูรณ์และพร้อมใช้งาน |
kState_Completing
|
สถานะของการเชื่อมโยงที่อยู่ระหว่างการดำเนินการให้เสร็จสมบูรณ์ |
kState_Incomplete
|
สถานะเริ่มต้น (และขั้นสุดท้าย) ของการเชื่อมโยง |
แอตทริบิวต์สาธารณะ
mAuthMode
WeaveAuthMode mAuthMode
โหมดการตรวจสอบสิทธิ์ Weave ที่จะใช้
(อ่านอย่างเดียว)
โหมดการตรวจสอบสิทธิ์นี้จะใช้ในการสื่อสารทั้งหมดที่อยู่ภายใต้การเชื่อมโยงนี้
mConnection
WeaveConnection * mConnection
ตัวชี้ไปยังการเชื่อมต่อ Weave ที่ใช้ในการเชื่อมโยงนี้ในปัจจุบัน
(อ่านเท่านั้น)
การเชื่อมโยง TCP อาจเริ่มต้นด้วยการเชื่อมต่อทันทีหรืออาจจัดสรรเมื่อดำเนินการสำเร็จ
mEngine
ProtocolEngine * mEngine
ตัวชี้ไปยังออบเจ็กต์ ProtocolEngine ที่เกี่ยวข้องกับการเชื่อมโยงนี้
โดยทั่วไป การเชื่อมโยงจะเสร็จสมบูรณ์ตามเครื่องมือโปรโตคอลที่เจาะจง ซึ่งมักจะใช้เป็นวิธีเข้าถึง MessageLayer นี่คือที่ที่เราติดตามเรื่องนี้
mPeerNodeId
uint64_t mPeerNodeId
รหัสโหนด 64 บิตของเป้าหมายการเชื่อมโยง
(อ่านเท่านั้น)
การเชื่อมโยงทุกรายการจะมีเอนทิตีเป้าหมาย ซึ่งจะตั้งชื่อไว้ที่นี่ นอกเหนือจากรหัสโหนด Weave แล้ว อาจตั้งชื่อปลายทางของบริการด้วย
mServiceMgr
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr
ตัวชี้ไปยังออบเจ็กต์ ServiceManager (ไม่บังคับ) เพื่อใช้ในการเชื่อมโยงนี้ให้เสร็จสมบูรณ์
(อ่านเท่านั้น)
เมื่อเชื่อมโยงกับบริการ Weave ระบบอาจระบุรหัสปลายทางของบริการ 64 บิตในเวลาเริ่มต้นแทนรหัสโหนด Weave ในกรณีนี้ จำเป็นต้องมีออบเจ็กต์ ServiceManager เพื่อดำเนินการเชื่อมโยงให้เสร็จสมบูรณ์ด้วย การเชื่อมโยง TCP หรือ WRMP ปกติไม่จำเป็นต้องใช้ออบเจ็กต์ ServiceManager
mState
uint8_t mState
สถานะออบเจ็กต์การเชื่อมโยงปัจจุบัน
การดำเนินการ "เสร็จสมบูรณ์" จะทำได้เพียงครั้งละ 1 รายการเท่านั้น และไม่ว่าในกรณีใดก็ตาม หากคุณขอให้ทำการผูกที่สมบูรณ์ ระบบจะเรียกใช้ฟังก์ชันยืนยันทันที ตัวแปรสถานะด้านล่างจะติดตามสถานะปัจจุบันและทำหน้าที่เป็นล็อกเอาต์
mTransport
uint8_t mTransport
การขนส่งที่จะใช้ในการเชื่อมโยงนี้ให้เสร็จสมบูรณ์
(อ่านเท่านั้น)
ค่าที่เป็นไปได้สำหรับ mTransport จะกำหนดไว้ใน DMConstants.h
ฟังก์ชันสาธารณะ
CompleteConfirm
void CompleteConfirm( WeaveConnection *aConnection )
จัดการการยืนยันคำขอเชื่อมโยง
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
CompleteConfirm
void CompleteConfirm( StatusReport & aReport )
จัดการความล้มเหลวของคำขอเชื่อมโยง
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
CompleteConfirm
void CompleteConfirm( void )
จัดการการยืนยันคำขอเชื่อมโยง
CompleteRequest
WEAVE_ERROR CompleteRequest( ProtocolEngine *aEngine )
ขอให้ทำการผูกให้เสร็จสิ้น
อย่างน้อยที่สุด การเชื่อมโยงให้เสร็จสมบูรณ์คือการเชื่อมโยงที่ต้องใช้ TCP ดำเนินการโดยออบเจ็กต์ ProtocolEngine ที่เฉพาะเจาะจง ซึ่งให้สิทธิ์เข้าถึงอินสแตนซ์ ExchangeManager
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
||||||
การส่งคืน |
ไม่เช่นนั้น ระบบจะแสดง WEAVE_ERROR ขณะพยายามเชื่อมต่อ
|
เชื่อมต่อ
WEAVE_ERROR Connect( WeaveConnection *aConnection )
ทำการเชื่อมโยง TCP ให้เสร็จสิ้นด้วยการระบุการเชื่อมต่อที่เสร็จสมบูรณ์แล้ว
ไม่สามารถใช้การเชื่อมโยง TCP ที่เริ่มต้นใหม่ได้จนกว่าจะเสร็จสมบูรณ์ โดยปกติแล้วจะดำเนินการนี้ตามคำขอเมื่อแอปพลิเคชันพยายามใช้การเชื่อมโยงเพื่อส่งข้อความ แต่ก็สามารถดำเนินการได้อย่างชัดแจ้งโดยการให้การเชื่อมต่อ Weave
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
ทำให้สิ้นสุด
void Finalize( void )
"ไม่สมบูรณ์" การเชื่อมโยงและเพิ่มพื้นที่ว่าง
การเชื่อมโยงอาจมีสถานะที่จำเป็นต้องล้าง เช่น การปิดการเชื่อมต่อ ซึ่งจัดการโดยเมธอด Uncomplete() เพิ่มเติมจากสถานะที่ล้างไปเป็นสถานะเริ่มต้นโดยเมธอด Free() วิธีนี้โดยหลักแล้วจะเรียกใช้ทั้ง 2 อย่างเพื่อความสะดวก
ดูเพิ่มเติม:Finalize(WEAVE_ERROR)
ทำให้สิ้นสุด
void Finalize( WEAVE_ERROR aErr )
"ไม่สมบูรณ์" การเชื่อมโยงและเพิ่มพื้นที่ว่าง
การเชื่อมโยงอาจมีสถานะที่จำเป็นต้องล้าง เช่น การปิดการเชื่อมต่อ ซึ่งจัดการโดยเมธอด Uncomplete() เพิ่มเติมจากสถานะที่ล้างไปเป็นสถานะเริ่มต้นโดยเมธอด Free() วิธีนี้โดยหลักแล้วจะเรียกใช้ทั้ง 2 อย่างเพื่อความสะดวก
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
Finalize(void)
ฟรี
void Free( void )
ล้างสถานะการเชื่อมโยง
คืนค่าสถานะการเชื่อมโยงทั้งหมดอย่างไม่มีเงื่อนไขกลับสู่สถานะเดิม
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
สร้างออบเจ็กต์ ExchangeContext จาก Binding
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
ตัวชี้ไปยังออบเจ็กต์ ExchangeContext หรือ NULL เมื่อล้มเหลว
|
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
จัดการกับความล้มเหลวในการเชื่อมโยง
จะมีการเรียกใช้เมธอดนี้ และในทางกลับกัน ก็จะเรียกตัวแฮนเดิลระดับสูงเมื่อการเชื่อมโยงล้มเหลวหลังจากเสร็จสิ้น กล่าวคือ หลังจากเรียกใช้ CompleteConfirm() ด้วยสถานะที่แสดงถึงความสำเร็จ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
CompleteConfirm(StatusReport &aReport)
เริ่มต้น
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
เริ่มต้นการเชื่อมโยงด้วยรหัสโหนดเพียงอย่างเดียว
การดำเนินการนี้จะทำให้เกิดการเชื่อมโยงกับการรับส่งเริ่มต้นที่กำหนดค่าไว้
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
แสดงผลค่า |
|
เริ่มต้น
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
เริ่มต้นออบเจ็กต์การเชื่อมโยงตามรหัสเพียร์และการรับส่งข้อมูล
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
แสดงผลค่า |
|
เริ่มต้น
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
เริ่มต้นออบเจ็กต์การเชื่อมโยงกับปลายทางบริการ
นี่คือวิธีเชื่อมโยงกับปลายทางที่เฉพาะเจาะจงในบริการ Nest การเชื่อมโยงประเภทนี้ต้องมีกระบวนการเสร็จสมบูรณ์แบบหลายขั้นตอน ซึ่งอาจรวมถึงการป้อนข้อมูลหรืออัปเดตแคชของไดเรกทอรีบริการในเครื่อง โดยส่วนใหญ่แล้ว กระบวนการนี้จะซ่อนไปจากแอปพลิเคชัน แต่หมายความว่าข้อผิดพลาดที่เกิดขึ้นภายหลังในกระบวนการอาจนำส่งตามปกติผ่านโค้ดเรียกกลับ "ยืนยัน" ที่เกี่ยวข้อง และหลังจากนั้นบางครั้งก็เวลาผ่านไปนานแล้ว คำขอเดิมที่จะใช้ (และทำให้เสร็จสมบูรณ์) การเชื่อมโยง
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
เริ่มต้น
WEAVE_ERROR Init( WeaveConnection *aConnection )
เริ่มต้นออบเจ็กต์ Binding ด้วย WeaveConnection
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
แสดงผลค่า |
|
IsComplete
bool IsComplete( void )
ตรวจสอบว่าการเชื่อมโยงเสร็จสมบูรณ์หรือไม่
รายละเอียด | |
---|---|
การส่งคืน |
true หากข้อมูลสมบูรณ์ มิฉะนั้นจะเป็นเท็จ
|
CompleteRequest(ProtocolEngine *aEngine)
IsFree
bool IsFree( void )
การตรวจสอบเป็นแบบผูกมัดฟรี
"ฟรี" ในบริบทนี้หมายถึง "มีรหัสโหนดเพียร์ที่กำหนดไว้" IsFree() ควรถูกมองว่าหมายถึง "มีการเรียกใช้ Free() และไม่เคยนำมาใช้ตั้งแต่"
รายละเอียด | |
---|---|
การส่งคืน |
true หากการเชื่อมโยงเป็นอิสระ หรือเป็นเท็จ
|
UncompleteRequest
void UncompleteRequest( void )
ทำให้การเชื่อมโยงไม่สมบูรณ์
โดยพื้นฐานแล้ว การเชื่อมโยงจะอยู่ในสถานะ "ไม่สมบูรณ์" หลังจากที่มีการเรียกใช้เมธอดนี้ แต่กล่าวให้ชัดเจนกว่าคือ สถานะที่เกี่ยวข้องใดๆ ที่ไม่ได้อยู่ในการเชื่อมโยงนั้น เช่น การเชื่อมต่อ TCP ควรได้รับการแก้ไขด้วย แอปพลิเคชันอาจพิจารณาเรียกใช้ UncompleteRequest() เป็นส่วนหนึ่งของการล้างข้อผิดพลาด
ดูเพิ่มเติม:UncompleteRequest(WEAVE_ERROR )
UncompleteRequest
void UncompleteRequest( WEAVE_ERROR aErr )
ทำให้การเชื่อมโยงไม่สมบูรณ์
โดยพื้นฐานแล้ว การเชื่อมโยงจะอยู่ในสถานะ "ไม่สมบูรณ์" หลังจากที่มีการเรียกใช้เมธอดนี้ แต่กล่าวให้ชัดเจนกว่าคือ สถานะที่เกี่ยวข้องใดๆ ที่ไม่ได้อยู่ในการเชื่อมโยงนั้น เช่น การเชื่อมต่อ TCP ควรได้รับการแก้ไขด้วย แอปพลิเคชันอาจพิจารณาเรียกใช้ UncompleteRequest() เป็นส่วนหนึ่งของการล้างข้อผิดพลาด
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
UncompleteRequest(void)
~การเชื่อมโยง
virtual ~Binding( void )
ตัวทำลายสำหรับการเชื่อมโยงออบเจ็กต์
ล้างสถานะภายในทั้งหมด "และ" ปิดการเชื่อมต่อที่เปิดอยู่ หากจำเป็น