nl:: Weave:: Profiles:: DataManagement_Legacy:: Binding
#include <src/lib/profiles/data-management/Legacy/Binding.h>
คลาส Binding จะจัดการสถานะการสื่อสารในนามของเอนทิตีของแอปพลิเคชันโดยใช้ Weave
สรุป
เมื่อแอปพลิเคชันต้องการใช้ Weave เพื่อสื่อสารกับหน่วยงานระยะไกล จะมีตัวเลือกมากมายให้เลือก คลาส Binding จะยึดตัวเลือกเหล่านี้และจัดเรียงตัวเลือกดังกล่าวเพื่อให้สิ่งที่ง่ายๆ เป็นเรื่องง่าย และสิ่งที่ยากกว่าจะสามารถจัดการได้เป็นอย่างน้อย ตัวเลือกที่ครอบคลุมมีดังนี้
- การสื่อสาร UDP แบบ Unicast กับโหนดการเพียร์ที่รู้จัก
- การออกอากาศ UDP โดยใช้ "any"
- การสื่อสาร WRMP แบบ Unicast กับโหนดการเพียร์ที่รู้จัก
- การสื่อสาร TCP กับโหนดการเพียร์ที่รู้จัก
- การสื่อสาร TCP กับปลายทางบริการที่รู้จักโดยใช้อินสแตนซ์ Service Manager เพื่อตั้งค่าสิ่งต่างๆ
- การสื่อสาร TCP โดยอิงตามการเชื่อมต่อที่สร้างไว้ล่วงหน้า
ผู้ผลิตและผู้ทำลาย |
|
---|---|
Binding(void)
ตัวสร้างเริ่มต้นสำหรับออบเจ็กต์การเชื่อมโยง
|
|
~Binding(void)
ตัวทำลายวัตถุการเชื่อมโยง
|
ประเภทสาธารณะ |
|
---|---|
@165{
|
enum ชุดสถานะของออบเจ็กต์การเชื่อมโยง |
แอตทริบิวต์สาธารณะ |
|
---|---|
mAuthMode
|
WeaveAuthMode
โหมดการตรวจสอบสิทธิ์ Weave ที่จะใช้
|
mConnection
|
ตัวชี้ไปยังการเชื่อมต่อ Weave ที่ใช้งานอยู่ในการเชื่อมโยงนี้
|
mEngine
|
ตัวชี้ไปยังออบเจ็กต์ ProtocolEngine ที่เกี่ยวข้องกับ Binding นี้
|
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)
|
เริ่มต้นออบเจ็กต์ Binding กับปลายทางบริการ
|
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 ที่จะใช้
(READ_ONLY)
นี่คือโหมดการตรวจสอบสิทธิ์ที่ใช้ในการสื่อสารทั้งหมดที่ควบคุมโดยการเชื่อมโยงนี้
mConnection
WeaveConnection * mConnection
ตัวชี้ไปยังการเชื่อมต่อ Weave ที่ใช้งานอยู่ในการเชื่อมโยงนี้
(อ่านอย่างเดียว)
การเชื่อมโยง TCP อาจเริ่มต้นจากการเชื่อมต่อทันทีหรืออาจจัดสรรการเชื่อมต่อเมื่อเสร็จสมบูรณ์
mEngine
ProtocolEngine * mEngine
ตัวชี้ไปยังออบเจ็กต์ ProtocolEngine ที่เกี่ยวข้องกับ Binding นี้
โดยทั่วไปแล้ว การเชื่อมโยงจะดำเนินการที่เกี่ยวข้องกับเครื่องมือโปรโตคอลหนึ่งๆ ซึ่งมักจะใช้เป็นวิธีเข้าถึง 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
สถานะออบเจ็กต์การเชื่อมโยงปัจจุบัน
"เสร็จสมบูรณ์" เพียงรายการเดียว สามารถดำเนินการในเวลาใดก็ได้ และไม่ว่าในกรณีใดๆ ถ้าคุณขอให้ทำการเชื่อมโยงที่สมบูรณ์แล้ว ก็เพียงเรียกใช้ฟังก์ชันยืนยันทันที ตัวแปรสถานะด้านล่างติดตามสถานะปัจจุบันและทำหน้าที่เป็นล็อกเอาต์
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 วิธีนี้เพื่อความสะดวก
ดูเพิ่มเติมสรุปผล(WEAVE_ERROR)
สรุป
void Finalize( WEAVE_ERROR aErr )
"ยังไม่เสร็จ" การผูกและทำให้อิสระ
การเชื่อมโยงอาจมีสถานะที่ต้องล้าง เช่น การปิดการเชื่อมต่อ ซึ่งดำเนินการโดยเมธอด Uncomplete() นอกเหนือจากสถานะที่ล้างเป็นสถานะเริ่มต้นโดยใช้เมธอด Free() โดยส่วนใหญ่แล้ววิธีนี้จะเรียกใช้ทั้ง 2 วิธีนี้เพื่อความสะดวก
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
สรุปผล(โมฆะ)
ฟรี
void Free( void )
ล้างสถานะการเชื่อมโยง
เปลี่ยนสถานะการเชื่อมโยงทั้งหมดกลับสู่สถานะเดิมโดยไม่มีเงื่อนไข
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
สร้างออบเจ็กต์ ExchangeContext จาก Binding
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
ตัวชี้ไปยังออบเจ็กต์ ExchangeContext หรือข้อมูล NULL เมื่อล้มเหลว
|
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
จัดการการเชื่อมโยงที่ไม่สำเร็จ
ระบบจะเรียกใช้เมธอดนี้ และจะเรียกใช้เครื่องจัดการในเลเยอร์ที่สูงขึ้นเมื่อการเชื่อมโยงล้มเหลวหลังจากเสร็จสมบูรณ์ กล่าวคือ มีการเรียกใช้ CompleteConfirm() ด้วยสถานะที่แสดงถึงความสำเร็จ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
CompleteConfirm(StatusReport &aReport)
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
เริ่มต้นการเชื่อมโยงด้วยรหัสโหนดเท่านั้น
ซึ่งจะทำให้เกิดการเชื่อมโยงกับการรับส่งเริ่มต้นที่กำหนดค่าไว้
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
ผลลัพธ์ |
|
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
เริ่มต้นออบเจ็กต์การเชื่อมโยงตามรหัสแอปเทียบเท่าและการส่ง
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
ผลลัพธ์ |
|
Init
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
เริ่มต้นออบเจ็กต์ Binding กับปลายทางบริการ
นี่คือวิธีเชื่อมโยงกับปลายทางที่เฉพาะเจาะจงในบริการ Nest การเชื่อมโยงประเภทนี้ต้องมีกระบวนการเสร็จสมบูรณ์แบบหลายขั้นตอน ซึ่งอาจรวมถึงการใส่หรืออัปเดตแคชไดเรกทอรีบริการในเครื่อง โดยส่วนใหญ่ กระบวนการนี้จะซ่อนจากแอปพลิเคชัน แต่หมายความว่าอาจมีการส่งข้อผิดพลาดที่เกิดขึ้นภายหลังของกระบวนการ โดยปกติจะผ่าน "การยืนยัน" ที่เกี่ยวข้อง การเรียกกลับ ซึ่งบางครั้งอาจใช้เวลานานหลังจากนั้น คำขอเดิมที่จะใช้ (และทำให้การเชื่อมโยง) เสร็จสมบูรณ์
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
ผลลัพธ์ |
|
Init
WEAVE_ERROR Init( WeaveConnection *aConnection )
เริ่มต้นออบเจ็กต์ Binding ด้วย WeaveConnection
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
ผลลัพธ์ |
|
IsComplete
bool IsComplete( void )
ตรวจสอบว่าการเชื่อมโยงเสร็จสมบูรณ์หรือไม่
รายละเอียด | |
---|---|
การคืนสินค้า |
true หากครบถ้วน เป็นเท็จ ในกรณีอื่น
|
CompleteRequest(ProtocolEngine *aEngine)
IsFree
bool IsFree( void )
เช็คมีผลผูกพันฟรี
"ฟรี" ในบริบทนี้หมายความว่า "มีโหนดระดับเดียวกันที่กำหนดไว้ ID" IsFree() should be thought of as meaning "has had Free() เรียกใช้และไม่ได้ใช้ตั้งแต่"
รายละเอียด | |
---|---|
การคืนสินค้า |
true หากการเชื่อมโยงเป็นแบบอิสระ เป็นเท็จ ในกรณีอื่นๆ
|
UncompleteRequest
void UncompleteRequest( void )
ทำให้การเชื่อมโยงไม่สมบูรณ์
โดยพื้นฐานแล้ว การเชื่อมโยงจะอยู่ในสถานะ "ไม่สมบูรณ์" หลังจากที่เมธอดนี้มีการเรียกใช้แล้ว แต่ในระดับที่ลึกกว่านั้นคือสถานะที่เกี่ยวข้องซึ่งไม่ได้รวมอยู่ในตัวการเชื่อมโยงเอง เช่น การเชื่อมต่อ TCP ควรได้รับการล้างด้วย แอปพลิเคชันอาจพิจารณาเรียกใช้ UncompleteRequest() เป็นส่วนหนึ่งของการล้างข้อผิดพลาด
ดูเพิ่มเติมUncompleteRequest(WEAVE_ERROR )
UncompleteRequest
void UncompleteRequest( WEAVE_ERROR aErr )
ทำให้การเชื่อมโยงไม่สมบูรณ์
โดยพื้นฐานแล้ว การเชื่อมโยงจะอยู่ในสถานะ "ไม่สมบูรณ์" หลังจากที่เมธอดนี้มีการเรียกใช้แล้ว แต่ในระดับที่ลึกกว่านั้นคือสถานะที่เกี่ยวข้องซึ่งไม่ได้รวมอยู่ในตัวการเชื่อมโยงเอง เช่น การเชื่อมต่อ TCP ควรได้รับการล้างด้วย แอปพลิเคชันอาจพิจารณาเรียกใช้ UncompleteRequest() เป็นส่วนหนึ่งของการล้างข้อผิดพลาด
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
UncompleteRequest(void)
~การเชื่อมโยง
virtual ~Binding( void )
ตัวทำลายวัตถุการเชื่อมโยง
ล้างสถานะภายในทั้งหมด "และ" ปิดการเชื่อมต่อที่เปิดอยู่ หากจำเป็น