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

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

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

 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 วิธีนี้เพื่อความสะดวก

ดูเพิ่มเติม
สรุปผล(WEAVE_ERROR)

สรุป

void Finalize(
  WEAVE_ERROR aErr
)

"ยังไม่เสร็จ" การผูกและทำให้อิสระ

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

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

ฟรี

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
อ้างอิงรายงานสถานะที่อธิบายข้อผิดพลาด
โปรดดูข้อมูลเพิ่มเติมที่
CompleteConfirm(StatusReport &amp;aReport)

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

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

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

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

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

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

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

Init

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

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

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

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

Init

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
)

เช็คมีผลผูกพันฟรี

"ฟรี" ในบริบทนี้หมายความว่า "มีโหนดระดับเดียวกันที่กำหนดไว้ ID" IsFree() should be thought of as meaning &quot;has had 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
)

ตัวทำลายวัตถุการเชื่อมโยง

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