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{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
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

ฟังก์ชันสาธารณะ

การเชื่อมโยง

 Binding(
  void
)

ตัวสร้างเริ่มต้นสำหรับออบเจ็กต์การเชื่อมโยง

ล้างสถานะภายในทั้งหมด

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

จัดการการยืนยันคำขอเชื่อมโยง

รายละเอียด
พารามิเตอร์
[in] aConnection
ตัวชี้ไปยัง WeaveConnection ที่ใช้งานอยู่ไปยังเป้าหมายการเชื่อมโยง

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

จัดการความล้มเหลวของคำขอเชื่อมโยง

รายละเอียด
พารามิเตอร์
[in] aReport
การอ้างอิงไปยังออบเจ็กต์ StatusReport ที่อธิบายความล้มเหลว

CompleteConfirm

void CompleteConfirm(
  void
)

จัดการการยืนยันคำขอเชื่อมโยง

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

ขอให้ทำการผูกให้เสร็จสิ้น

อย่างน้อยที่สุด การเชื่อมโยงให้เสร็จสมบูรณ์คือการเชื่อมโยงที่ต้องใช้ TCP ดำเนินการโดยออบเจ็กต์ ProtocolEngine ที่เฉพาะเจาะจง ซึ่งให้สิทธิ์เข้าถึงอินสแตนซ์ ExchangeManager

รายละเอียด
พารามิเตอร์
[in] aEngine
ตัวชี้ไปยังออบเจ็กต์ ProtocolEngine ในนามของการดำเนินการให้เสร็จสมบูรณ์
แสดงผลค่า
WEAVE_NO_ERROR
ความสำเร็จ
WEAVE_ERROR_INCORRECT_STATE
หากการเชื่อมโยงเสร็จสมบูรณ์แล้ว
WEAVE_ERROR_NO_MEMORY
หากต้องมีการเชื่อมต่อแต่ไม่มีการเชื่อมต่อที่ใช้งานได้
การส่งคืน
ไม่เช่นนั้น ระบบจะแสดง WEAVE_ERROR ขณะพยายามเชื่อมต่อ

เชื่อมต่อ

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

ทำการเชื่อมโยง TCP ให้เสร็จสิ้นด้วยการระบุการเชื่อมต่อที่เสร็จสมบูรณ์แล้ว

ไม่สามารถใช้การเชื่อมโยง TCP ที่เริ่มต้นใหม่ได้จนกว่าจะเสร็จสมบูรณ์ โดยปกติแล้วจะดำเนินการนี้ตามคำขอเมื่อแอปพลิเคชันพยายามใช้การเชื่อมโยงเพื่อส่งข้อความ แต่ก็สามารถดำเนินการได้อย่างชัดแจ้งโดยการให้การเชื่อมต่อ Weave

รายละเอียด
พารามิเตอร์
[in] aConnection
ตัวชี้ไปยัง WeaveConnection ที่ใช้ในการเชื่อมโยง
แสดงผลค่า
WEAVE_NO_ERROR
ความสำเร็จ
WEAVE_ERROR_INCORRECT_STATE
หากการเชื่อมโยงมีการเชื่อมต่ออยู่แล้ว
WEAVE_ERROR_INVALID_ARGUMENT
หากการเชื่อมต่อเป็นค่าว่าง

ทำให้สิ้นสุด

void Finalize(
  void
)

"ไม่สมบูรณ์" การเชื่อมโยงและเพิ่มพื้นที่ว่าง

การเชื่อมโยงอาจมีสถานะที่จำเป็นต้องล้าง เช่น การปิดการเชื่อมต่อ ซึ่งจัดการโดยเมธอด Uncomplete() เพิ่มเติมจากสถานะที่ล้างไปเป็นสถานะเริ่มต้นโดยเมธอด Free() วิธีนี้โดยหลักแล้วจะเรียกใช้ทั้ง 2 อย่างเพื่อความสะดวก

ดูเพิ่มเติม:
Finalize(WEAVE_ERROR)

ทำให้สิ้นสุด

void Finalize(
  WEAVE_ERROR aErr
)

"ไม่สมบูรณ์" การเชื่อมโยงและเพิ่มพื้นที่ว่าง

การเชื่อมโยงอาจมีสถานะที่จำเป็นต้องล้าง เช่น การปิดการเชื่อมต่อ ซึ่งจัดการโดยเมธอด Uncomplete() เพิ่มเติมจากสถานะที่ล้างไปเป็นสถานะเริ่มต้นโดยเมธอด Free() วิธีนี้โดยหลักแล้วจะเรียกใช้ทั้ง 2 อย่างเพื่อความสะดวก

รายละเอียด
พารามิเตอร์
[in] aErr
รหัสข้อผิดพลาดนี้จะระบุสาเหตุของคำขอนี้ หากไม่ใช่ WEAVE_NO_ERROR แสดงว่าการเชื่อมต่อ TCP อาจถูกยกเลิก
ดูเพิ่มเติม:
Finalize(void)

ฟรี

void Free(
  void
)

ล้างสถานะการเชื่อมโยง

คืนค่าสถานะการเชื่อมโยงทั้งหมดอย่างไม่มีเงื่อนไขกลับสู่สถานะเดิม

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

สร้างออบเจ็กต์ ExchangeContext จาก Binding

รายละเอียด
พารามิเตอร์
[in] aExchangeMgr
ตัวชี้ไปยังผู้จัดการ Exchange สำหรับขอบริบท
[in] aAppState
ตัวชี้ที่เป็นโมฆะไปยังออบเจ็กต์สถานะแอปพลิเคชันสำหรับจัดเก็บในบริบทของการแลกเปลี่ยนสำหรับการใช้งานในภายหลัง
การส่งคืน
ตัวชี้ไปยังออบเจ็กต์ ExchangeContext หรือ NULL เมื่อล้มเหลว

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

จัดการกับความล้มเหลวในการเชื่อมโยง

จะมีการเรียกใช้เมธอดนี้ และในทางกลับกัน ก็จะเรียกตัวแฮนเดิลระดับสูงเมื่อการเชื่อมโยงล้มเหลวหลังจากเสร็จสิ้น กล่าวคือ หลังจากเรียกใช้ CompleteConfirm() ด้วยสถานะที่แสดงถึงความสำเร็จ

รายละเอียด
พารามิเตอร์
[in] aReport
การอ้างอิงไปยัง StatusReport ที่อธิบายถึงข้อผิดพลาด
โปรดดูเพิ่มเติมที่
CompleteConfirm(StatusReport &aReport)

เริ่มต้น

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

เริ่มต้นการเชื่อมโยงด้วยรหัสโหนดเพียงอย่างเดียว

การดำเนินการนี้จะทำให้เกิดการเชื่อมโยงกับการรับส่งเริ่มต้นที่กำหนดค่าไว้

รายละเอียด
พารามิเตอร์
[in] aPeerNodeId
การอ้างอิงรหัส 64 บิตของเป้าหมายการเชื่อมโยง
แสดงผลค่า
WEAVE_NO_ERROR
ความสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากไม่ได้ระบุการเชื่อมโยงไว้ต่ำ

เริ่มต้น

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

เริ่มต้นออบเจ็กต์การเชื่อมโยงตามรหัสเพียร์และการรับส่งข้อมูล

รายละเอียด
พารามิเตอร์
[in] aPeerNodeId
การอ้างอิงไปยังตัวระบุโหนด 64 บิตของเป้าหมายการเชื่อมโยง
[in] aTransport
ข้อกำหนดเฉพาะของการขนส่งจาก WeaveTransportOption
แสดงผลค่า
WEAVE_NO_ERROR
ความสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากไม่ได้ระบุการเชื่อมโยงไว้ต่ำ

เริ่มต้น

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

เริ่มต้นออบเจ็กต์การเชื่อมโยงกับปลายทางบริการ

นี่คือวิธีเชื่อมโยงกับปลายทางที่เฉพาะเจาะจงในบริการ Nest การเชื่อมโยงประเภทนี้ต้องมีกระบวนการเสร็จสมบูรณ์แบบหลายขั้นตอน ซึ่งอาจรวมถึงการป้อนข้อมูลหรืออัปเดตแคชของไดเรกทอรีบริการในเครื่อง โดยส่วนใหญ่แล้ว กระบวนการนี้จะซ่อนไปจากแอปพลิเคชัน แต่หมายความว่าข้อผิดพลาดที่เกิดขึ้นภายหลังในกระบวนการอาจนำส่งตามปกติผ่านโค้ดเรียกกลับ "ยืนยัน" ที่เกี่ยวข้อง และหลังจากนั้นบางครั้งก็เวลาผ่านไปนานแล้ว คำขอเดิมที่จะใช้ (และทำให้เสร็จสมบูรณ์) การเชื่อมโยง

รายละเอียด
พารามิเตอร์
[in] aServiceEpt
การอ้างอิงตัวระบุ 64 บิตสําหรับปลายทางบริการ Weave ที่สนใจ
[in] aServiceMgr
ตัวชี้ไปยังอินสแตนซ์ตัวจัดการบริการเพื่อใช้ในการค้นหาระดับบริการและเชื่อมต่อกับอินสแตนซ์
[in] aAuthMode
โหมดการตรวจสอบสิทธิ์ที่จะใช้ในการเชื่อมต่อ
แสดงผลค่า
WEAVE_NO_ERROR
ความสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากไม่ได้ระบุการเชื่อมโยงไว้ต่ำ

เริ่มต้น

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

เริ่มต้นออบเจ็กต์ Binding ด้วย WeaveConnection

รายละเอียด
พารามิเตอร์
[in] aConnection
ตัวชี้ไปยัง WeaveConnection เพื่อใช้เป็นพื้นฐานสำหรับการเชื่อมโยง
แสดงผลค่า
WEAVE_NO_ERROR
ความสำเร็จ
WEAVE_ERROR_INVALID_ARGUMENT
หากไม่ได้ระบุการเชื่อมโยงไว้ต่ำ

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() เป็นส่วนหนึ่งของการล้างข้อผิดพลาด

รายละเอียด
พารามิเตอร์
[in] aErr
หากไม่ใช่ WEAVE_NO_ERROR การเชื่อมต่อที่มีอยู่ (หากมี) จะถูกยกเลิกแทนที่จะปิดอย่างสวยงาม
โปรดดูเพิ่มเติมที่
UncompleteRequest(void)

~การเชื่อมโยง

virtual  ~Binding(
  void
)

ตัวทำลายสำหรับการเชื่อมโยงออบเจ็กต์

ล้างสถานะภายในทั้งหมด "และ" ปิดการเชื่อมต่อที่เปิดอยู่ หากจำเป็น