nl::Weave::โปรไฟล์::ServiceDirectory::WeaveServiceManager

#include <src/lib/profiles/service-directory/ServiceDirectory.h>

ออบเจ็กต์ผู้จัดการสําหรับไดเรกทอรีบริการ Weave

สรุป

เครื่องมือจัดการบริการ Weave คืออินเทอร์เฟซหลักสําหรับแอปพลิเคชันที่ใช้ในบริการไดเรกทอรี ด้วยเหตุนี้ จึงซ่อนข้อมูลแทรกในการค้นหาไดเรกทอรีที่เชื่อมโยงกับปลายทางบริการ โดยค้นหา DNS ในชื่อโฮสต์อย่างน้อย 1 ชื่อที่พบ เพื่อพยายามเชื่อมต่อ รักษาความปลอดภัยของการเชื่อมต่อ และอื่นๆ และยังจัดการแคชของข้อมูลไดเรกทอรีบริการได้อีกด้วย

เครื่องมือสร้างและตัวสร้าง

WeaveServiceManager(void)
วิธีการนี้จะเริ่มต้นอินสแตนซ์ WeaveServiceManager
~WeaveServiceManager(void)
วิธีนี้ทําลายอินสแตนซ์ WeaveServiceManager

ประเภทสาธารณะ

@303{
  kWeave_DefaultSendTimeout = 15000
}
enum
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectStart
void(*
โค้ดเรียกกลับของแอปพลิเคชันเกิดขึ้นก่อนการสร้างการเชื่อมต่อ
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
โค้ดเรียกกลับของแอปพลิเคชันเพื่อทําเครื่องหมายเวลาของการค้นหาไดเรกทอรีบริการขาออก
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
โค้ดเรียกกลับของแอปพลิเคชันเพื่อแสดงค่าเวลาจากการตอบกลับไดเรกทอรีบริการ
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor
ฟังก์ชันตัวเข้าถึงสําหรับข้อมูลไดเรกทอรีราก
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandler
void(*
เครื่องจัดการสําหรับเงื่อนไขข้อผิดพลาดและสถานะ

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

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
กําหนดฟังก์ชันเรียกกลับโดยทันทีก่อนการสร้างการเชื่อมต่อ
cancel(uint64_t aServiceEp, void *aAppState)
void
การดําเนินการนี้จะยกเลิกคําขอเชื่อมต่อ
clearCache(void)
void
วิธีการนี้จะล้างสถานะและแคชของผู้จัดการ หากรัฐนั้นอยู่ในสถานะ kServiceMgrState_Resolved ซึ่งหมายความว่าจะตอบกลับจากปลายทาง Service Directory
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
คําขอประเภทนี้จะเชื่อมต่อกับบริการ Weave
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
การดําเนินการนี้จะเริ่มต้นออบเจ็กต์ผู้จัดการบริการ
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสําหรับปลายทางบริการ
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสําหรับปลายทางบริการ
onConnectionClosed(WEAVE_ERROR aError)
void
เมธอดนี้จะจัดการกับเหตุการณ์ปิดการเชื่อมต่อที่รายงานโดยบริบทการแลกเปลี่ยนของ Weave ที่เกี่ยวข้อง
onConnectionComplete(WEAVE_ERROR aError)
void
วิธีนี้จัดการเหตุการณ์การเชื่อมต่อที่เสร็จสมบูรณ์สําหรับธุรกรรมการค้นหาปลายทางบริการ
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
วิธีนี้จะจัดการข้อความตอบกลับในการสนทนากับบริการไดเรกทอรี
onResponseTimeout(void)
void
เมธอดนี้จะจัดการกับเหตุการณ์การหมดเวลา ซึ่งไม่ได้รับการตอบสนองจากบริการไดเรกทอรี
relocate(WEAVE_ERROR aError)
void
วิธีการนี้จะย้ายแคชไดเรกทอรีบริการ
relocate(void)
void
วิธีการนี้จะย้ายแคชไดเรกทอรีบริการ
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
เพิ่มรายการการลบล้างของชื่อโฮสต์และรหัสพอร์ตที่ตอนต้นของรายการไดเรกทอรี
reset(WEAVE_ERROR aError)
void
วิธีนี้รีเซ็ตตัวจัดการบริการกลับสู่สถานะเริ่มต้น
reset(void)
void
วิธีนี้รีเซ็ตตัวจัดการบริการกลับสู่สถานะเริ่มต้น
unresolve(WEAVE_ERROR aError)
void
การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้
unresolve(void)
void
การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้

ชั้นเรียน

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest

คลาสนี้แสดงธุรกรรมรายการเดียวที่จัดการโดยผู้จัดการบริการ

ประเภทสาธารณะ

303

 @303
พร็อพเพอร์ตี้
kWeave_DefaultSendTimeout

จํานวนมิลลิวินาทีที่ต้องได้รับคําตอบสําหรับการค้นหาในไดเรกทอรีก่อนที่บริบทของ Exchange จะหมดเวลา

OnConnectStart

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

โค้ดเรียกกลับของแอปพลิเคชันเกิดขึ้นก่อนการสร้างการเชื่อมต่อ

แอปพลิเคชันจะใช้โค้ดเรียกกลับนี้เพื่อให้สังเกตและปรับเปลี่ยนอาร์กิวเมนต์ที่ส่งไปยัง #WeaveConnection::Connect() ได้ในระหว่างการสร้างการเชื่อมต่อบริการ ระบบจะเรียกใช้โค้ดเรียกกลับนี้ทั้งสําหรับการเชื่อมต่อกับปลายทางบริการเป้าหมาย และการเชื่อมต่อกับปลายทาง Service Directory ในกรณีที่จําเป็นต้องค้นหาไดเรกทอรี

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

โค้ดเรียกกลับของแอปพลิเคชันเพื่อทําเครื่องหมายเวลาของการค้นหาไดเรกทอรีบริการขาออก

โดยระบบจะเรียกใช้เมื่อเรากําลังจะส่งคําขอการค้นหาปลายทางบริการ ใช้เพื่อจับคู่กับ OnServiceEndpointQueryEnd เพื่อชดเชยเวลาเที่ยวบินข้อความ

OnServiceEndpointQueryEndWithTimeInfo

void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)

โค้ดเรียกกลับของแอปพลิเคชันเพื่อแสดงค่าเวลาจากการตอบกลับไดเรกทอรีบริการ

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

รายละเอียด
พารามิเตอร์
[in] timeQueryReceiptMsec
จํานวนหน่วยของ msec ตั้งแต่ POSIX Epoch เมื่อได้รับคําค้นหาในฝั่งเซิร์ฟเวอร์
[in] timeProcessMsec
จํานวนหน่วยมิลลิวินาทีที่ประมวลผลในการประมวลผลการค้นหานี้

รูทไดเรกทอรี

WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)

ฟังก์ชันตัวเข้าถึงสําหรับข้อมูลไดเรกทอรีราก

คุณต้องเริ่มต้นจากที่หนึ่ง และด้วยไดเรกทอรีบริการที่คุณจะต้องเริ่มต้นด้วยไดเรกทอรี stub ที่มีที่อยู่ของเซิร์ฟเวอร์ที่คุณสามารถแตะเพื่อทําทุกอย่างได้ เนื่องจากการจัดการและต้นทางของข้อมูลนี้มีแนวโน้มที่จะแตกต่างกันไปตามอุปกรณ์แต่ละเครื่อง เราจึงมีโค้ดเรียกกลับของผู้เข้าถึงที่นี่

รายละเอียด
พารามิเตอร์
[out] aDirectory
ตัวชี้ไปยังบัฟเฟอร์เพื่อเขียนข้อมูลไดเรกทอรี
[in] aLength
ความยาวของบัฟเฟอร์ที่ระบุเป็นไบต์
การคืนสินค้า
WEhave_NO_ERROR สําเร็จ มิเช่นนั้นกระบวนการโหลดจะถูกยกเลิก

เครื่องจัดการสถานะ

void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)

เครื่องจัดการสําหรับเงื่อนไขข้อผิดพลาดและสถานะ

ผู้ใช้ผู้จัดการบริการอาจได้รับแจ้งให้ทราบถึงปัญหาในการพยายามส่งคําขอเชื่อมต่อด้วยวิธีใดวิธีหนึ่งใน 2 วิธีนี้ คุณอาจได้รับรายงานสถานะจากบริการหรืออาจได้รับ WEhave_ERROR ภายใน ไม่ว่าในกรณีใด ข้อมูลจะมาจากโค้ดเรียกกลับนี้

รายละเอียด
พารามิเตอร์
[in] anAppState
ตัวชี้ไปยังออบเจ็กต์แอปพลิเคชันที่ส่งผ่านไปยังการเรียกใช้ conect() ที่เกี่ยวข้อง
[in] anError
รหัสข้อผิดพลาด Weave ที่ระบุว่าเกิดข้อผิดพลาดขึ้นขณะพยายามดําเนินการกับคําขอเชื่อมต่อ ค่านี้จะเป็น WEhave_NO_ERROR ในกรณีที่ไม่พบข้อผิดพลาดและมีรายงานสถานะ
[in] aStatusReport
ตัวชี้ไปยังรายงานสถานะที่สร้างโดยบริการไดเรกทอรีระยะไกล อาร์กิวเมนต์นี้จะเป็น NULL ในกรณีที่ไม่มีรายงานสถานะและมีการส่งข้อผิดพลาดภายในในอาร์กิวเมนต์ก่อนหน้า

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

ตั้งค่า ConnectConnectStartback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

กําหนดฟังก์ชันเรียกกลับโดยทันทีก่อนการสร้างการเชื่อมต่อ

รายละเอียด
พารามิเตอร์
[in] aConnectBegin
ตัวชี้ไปยังฟังก์ชันเรียกกลับ ค่า NULL จะปิดใช้โค้ดเรียกกลับ

ผู้จัดการบริการ Weave

 WeaveServiceManager(
  void
)

วิธีการนี้จะเริ่มต้นอินสแตนซ์ WeaveServiceManager

โปรดทราบว่าคุณต้องเรียกใช้ init() เพื่อเริ่มอินสแตนซ์นี้เพิ่มเติม

ยกเลิก

void cancel(
  uint64_t aServiceEp,
  void *aAppState
)

การดําเนินการนี้จะยกเลิกคําขอเชื่อมต่อ

วิธีนี้จะยกเลิกคําขอเชื่อมต่อที่ระบุรหัสปลายทางบริการและออบเจ็กต์สถานะแอปพลิเคชันที่ส่งผ่านในเวลาตามคําขอเป็นตัวระบุ หากนี่เป็นคําขอเชื่อมต่อครั้งสุดท้าย วิธีการนี้จะล้างสถานะการเชื่อมต่อไดเรกทอรีบริการที่รอดําเนินการด้วย

รายละเอียด
พารามิเตอร์
[in] aServiceEp
รหัสปลายทางของบริการของคําขอที่ยกเลิก
[in] anAppState
ตัวชี้ไปยังออบเจ็กต์สถานะแอปที่กําหนดให้กับการเรียก connect()

ล้างแคช

void clearCache(
  void
)

วิธีการนี้จะล้างสถานะและแคชของผู้จัดการ หากรัฐนั้นอยู่ในสถานะ kServiceMgrState_Resolved ซึ่งหมายความว่าจะตอบกลับจากปลายทาง Service Directory

เชื่อมต่อ

WEAVE_ERROR connect(
  uint64_t aServiceEp,
  WeaveAuthMode aAuthMode,
  void *aAppState,
  StatusHandler aStatusHandler,
  WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler,
  const uint32_t aConnectTimeoutMsecs,
  const InterfaceId aConnectIntf
)

คําขอประเภทนี้จะเชื่อมต่อกับบริการ Weave

นี่คือการโทรเชื่อมต่อระดับบนสุด ซึ่งหลักๆ แล้ว จะสร้างการเชื่อมต่อที่ปลอดภัยกับบริการ Weave โดยใช้ปลายทางบริการและโหมดการตรวจสอบสิทธิ์ หรือพยายามปิดใช้

เมธอดนี้จะเรียกใช้ได้หลังจากเรียกใช้ init() สําเร็จแล้วเท่านั้น และคําขอยกเลิกอาจถูกยกเลิกได้โดย cancel()

คุณสามารถเรียกใช้เมธอดนี้ก่อนที่แคชในเครื่องจะมีข้อมูลจากข้อมูลที่จัดสรรไว้โดยค่าเริ่มต้น หรือการเดินทางไปยังไดเรกทอรีในไดเรกทอรี ผู้จัดการบริการจะจัดคิวคําขอก่อนที่จะระบุเนื้อหาแคชได้

รายละเอียด
พารามิเตอร์
[in] aServiceEp
ตัวระบุปลายทางบริการตามที่กําหนดไว้ใน ServiceDirectory.h สําหรับบริการที่สนใจ
[in] aAuthMode
โหมดการตรวจสอบสิทธิ์ที่จะใช้เมื่อเชื่อมต่อกับบริการที่สนใจ
[in] aAppState
ตัวชี้ไปยังออบเจ็กต์สถานะแอปพลิเคชัน ซึ่งส่งไปยังโค้ดเรียกกลับเป็นอาร์กิวเมนต์
[in] aStatusHandler
โค้ดเรียกกลับเพื่อเรียกใช้ในกรณีที่เกิดข้อผิดพลาดที่เกิดขึ้นก่อนการเชื่อมต่อเสร็จสมบูรณ์
[in] aConnectionCompleteHandler
โค้ดเรียกกลับเพื่อเรียกใช้ในกรณีที่การเชื่อมต่อที่ขอเสร็จสมบูรณ์ โปรดทราบว่าการเชื่อมต่ออาจล้มเหลวโดยมีรหัสข้อผิดพลาด Weave
[in] aConnectTimeoutMsecs
ตัวเลือกการเชื่อมต่อ TCP หมดเวลาในหน่วยมิลลิวินาที
[in] aConnectIntf
อินเทอร์เฟซที่ไม่บังคับในการสร้างการเชื่อมต่อ
การคืนสินค้า
WEhave_NO_ERROR สําเร็จ ไม่เช่นนั้นจะเป็นรหัสข้อผิดพลาดที่เกี่ยวข้อง

init

WEAVE_ERROR init(
  WeaveExchangeManager *aExchangeMgr,
  uint8_t *aCache,
  uint16_t aCacheLen,
  RootDirectoryAccessor aAccessor,
  WeaveAuthMode aDirAuthMode,
  OnServiceEndpointQueryBegin aServiceEndpointQueryBegin,
  OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo,
  OnConnectBegin aConnectBegin
)

การดําเนินการนี้จะเริ่มต้นออบเจ็กต์ผู้จัดการบริการ

คุณต้องเริ่มต้นออบเจ็กต์ผู้จัดการบริการก่อนจึงจะใช้งานได้ หลังจากเรียกใช้เมธอดนี้สําเร็จ ไคลเอ็นต์จะเริ่มเรียกใช้ connect(), lookup() และวิธีการอื่นๆ ได้

รายละเอียด
พารามิเตอร์
[in] aExchangeMgr
ตัวชี้ไปยัง Ad Exchange ที่จะใช้สําหรับการแลกเปลี่ยนโปรไฟล์ไดเรกทอรีบริการทั้งหมด
[in] aCache
ตัวชี้ไปยังบัฟเฟอร์ซึ่งใช้เพื่อแคชข้อมูลไดเรกทอรีได้
[in] aCacheLen
ความยาวของไบต์ของแคช
[in] aAccessor
โค้ดเรียกกลับตามที่กําหนดไว้ใน ServiceDirectory.h จะมีการเรียกให้โหลดไดเรกทอรีรากเป็นจุดเริ่มต้นสําหรับการค้นหาไดเรกทอรี
[in] aDirAuthMode
โหมดการตรวจสอบสิทธิ์ที่จะใช้เมื่อพูดกับบริการไดเรกทอรี
[in] aServiceEndpointQueryBegin
ตัวระบุฟังก์ชันของประเภท OnServiceEndpointQueryBegin ที่จะเรียกใช้เมื่อเริ่มต้นคําขอไดเรกทอรีบริการและอนุญาตให้เรียกใช้รหัสแอปพลิเคชันเวลาที่ต้องการใช้การซิงค์เวลาที่ได้รับจากโปรโตคอลไดเรกทอรีบริการ
[in] aServiceEndpointQueryEndWithTimeInfo
ตัวชี้ฟังก์ชันของประเภท OnServiceEndpointQueryEndWithTimeInfo ที่ถูกเรียกเมื่อมาถึงไดเรกทอรีไดเรกทอรีที่อนุญาตให้แอปพลิเคชันซิงค์กับบริการ Weave โดยใช้ช่องเวลาที่ระบุในการตอบสนอง ระบบจะโทรกลับนี้หลังจากผู้จัดการบริการตอบกลับด้วยข้อมูลเวลา ควรกรอกแคชให้เรียบร้อยก่อนโค้ดเรียกกลับ
[in] aConnectBegin
ตัวชี้ฟังก์ชันของประเภท ConnectConnectBegin ที่จะเรียกใช้ก่อนการสร้างการเชื่อมต่อทันที และให้แอปพลิเคชันสังเกตการณ์และเปลี่ยนแปลงอาร์กิวเมนต์ที่ส่งไปยัง #WeaveConnection::Connect() ได้ ค่า NULL (ค่าเริ่มต้น) จะปิดใช้การเรียกกลับ
การคืนสินค้า
WEhave_ERROR_INVALID_sync หากอาร์กิวเมนต์ของฟังก์ชันไม่ถูกต้อง มิฉะนั้น WEhave_NO_ERROR

การค้นหา

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  HostPortList *outHostPortList
)

วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสําหรับปลายทางบริการ

หากไดเรกทอรีของบริการได้รับการแก้ไขแล้ว เช่น หากมีการดําเนินการ connect() สําเร็จ วิธีนี้จะสร้างออบเจ็กต์ HostPortList ที่ระบุ

หมายเหตุ: HostPortList เชื่อมโยงกับออบเจ็กต์ WeaveServiceManager ซึ่งจะยังคงใช้ได้จนกว่าจะมีการล้างแคชของไดเรกทอรีบริการหรือจนกว่าจะมีการค้นหาไดเรกทอรีบริการอื่น

รายละเอียด
พารามิเตอร์
[in] aServiceEp
ตัวระบุของปลายทางบริการที่จะค้นหา
[out] outHostPortList
ตัวชี้ไปยัง HostPortList ที่ระบบจะเติมข้อมูลเมื่อทําการค้นหารายการไดเรกทอรีที่สําเร็จ ต้องไม่ใช่ NULL
แสดงผลค่า
WEAVE_NO_ERROR
สําเร็จ หรือไม่เช่นนั้น รหัสข้อผิดพลาดที่เกี่ยวข้อง
WEAVE_ERROR_INVALID_SERVICE_EP
หากไม่พบปลายทางบริการที่ระบุ
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
หากไดเรกทอรีมีประเภทรายการไดเรกทอรีที่ไม่รู้จัก

การค้นหา

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  uint8_t *aControlByte,
  uint8_t **aDirectoryEntry
)

วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสําหรับปลายทางบริการ

หากไดเรกทอรีของบริการได้รับการแก้ไขแล้ว เช่น หากมีการดําเนินการ connect() ได้สําเร็จ วิธีนี้จะแสดงรายการไดเรกทอรีที่ระบุตัวระบุปลายทางบริการ

เมธอดนี้แสดงรายละเอียดของการใช้งานภายในของไดเรกทอรีบริการ การนําไปใช้งานควรอย่างยิ่ง โดยใช้ตัวแปรของเมธอดนี้ที่จะสร้าง HostPortList

รายละเอียด
พารามิเตอร์
[in] aServiceEp
ตัวระบุของปลายทางบริการที่จะค้นหา
[out] aControlByte
ตัวชี้ไปยังตําแหน่งสําหรับเขียนไบต์การควบคุมรายการไดเรกทอรี
[out] aDirectoryEntry
ตัวชี้ตัวชี้ที่จะส่งไปยังรายการไดเรกทอรี
แสดงผลค่า
WEAVE_NO_ERROR
สําเร็จ หรือไม่เช่นนั้น รหัสข้อผิดพลาดที่เกี่ยวข้อง
WEAVE_ERROR_INVALID_SERVICE_EP
หากไม่พบปลายทางบริการที่ระบุ
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
หากไดเรกทอรีมีประเภทรายการไดเรกทอรีที่ไม่รู้จัก

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

เมธอดนี้จะจัดการกับเหตุการณ์ปิดการเชื่อมต่อที่รายงานโดยบริบทการแลกเปลี่ยนของ Weave ที่เกี่ยวข้อง

รายละเอียด
พารามิเตอร์
[in] aError
เกิดข้อผิดพลาดใน Weave ที่ระบุเหตุผลที่ปิดการเชื่อมต่อนี้

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

วิธีนี้จัดการเหตุการณ์การเชื่อมต่อที่เสร็จสมบูรณ์สําหรับธุรกรรมการค้นหาปลายทางบริการ

สิ่งที่ทําได้มีดังนี้ ก่อนอื่น การเชื่อมต่ออาจล้มเหลวได้ในกรณีที่เราดําเนินการเสร็จสิ้น มิฉะนั้น การเชื่อมต่อจะเสร็จสมบูรณ์และสิ่งที่ต้องทําคือเปิดบริบทของ Exchange และส่งการค้นหาไดเรกทอรี

รายละเอียด
พารามิเตอร์
[in] aError
ข้อผิดพลาดของ Weave หากพบข้อผิดพลาดระหว่างการตั้งค่าการเชื่อมต่อ

onResponseReceived

void onResponseReceived(
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

วิธีนี้จะจัดการข้อความตอบกลับในการสนทนากับบริการไดเรกทอรี

รายละเอียด
พารามิเตอร์
[in] aProfileId
รหัสโปรไฟล์สําหรับข้อความขาเข้านี้
[in] aMsgType
ประเภทโปรไฟล์เฉพาะของข้อความนี้
[in] aMsg
เนื้อหาของข้อความนี้

onResponseTimeout

void onResponseTimeout(
  void
)

เมธอดนี้จะจัดการกับเหตุการณ์การหมดเวลา ซึ่งไม่ได้รับการตอบสนองจากบริการไดเรกทอรี

ย้ายตําแหน่ง

void relocate(
  WEAVE_ERROR aError
)

วิธีการนี้จะย้ายแคชไดเรกทอรีบริการ

เมื่อปลายทางบริการส่งคืนรายงานสถานะโดยมีรหัสสถานะ kStatus_Relocation แอปพลิเคชันอาจเรียกใช้ unresolve() เพื่อล้างแคชและยกเลิกคําขอการเชื่อมต่อ วิธีนี้ทําให้การจัดการข้อผิดพลาดง่ายขึ้นโดยเรียกใช้ unresolve() ในครั้งแรก และ reset() หากยังแก้ปัญหาไม่ได้

สําหรับเมธอดนี้ สําหรับความเข้ากันได้แบบย้อนหลัง จะรับและบันทึกข้อผิดพลาด จากนั้นเรียก relocate(null)

รายละเอียด
พารามิเตอร์
[in] aError
เกิดข้อผิดพลาดในการบันทึก
ดูเพิ่มเติม:
ย้ายที่อยู่(เป็นโมฆะ)

ย้ายตําแหน่ง

void relocate(
  void
)

วิธีการนี้จะย้ายแคชไดเรกทอรีบริการ

เมื่อปลายทางบริการส่งคืนรายงานสถานะโดยมีรหัสสถานะ kStatus_Relocation แอปพลิเคชันอาจเรียกใช้ unresolve() เพื่อล้างแคชและยกเลิกคําขอการเชื่อมต่อ วิธีนี้ทําให้การจัดการข้อผิดพลาดง่ายขึ้นโดยเรียกใช้ unresolve() ในครั้งแรก และ reset() หากยังแก้ปัญหาไม่ได้

ดูเพิ่มเติม:
ย้ายตําแหน่ง(WEhave_ERROR)

แทนที่รายการ OrAddCacheEntry

WEAVE_ERROR replaceOrAddCacheEntry(
  uint16_t port,
  const char *hostName,
  uint8_t hostLen,
  uint64_t serviceEndpointId
)

เพิ่มรายการการลบล้างของชื่อโฮสต์และรหัสพอร์ตที่ตอนต้นของรายการไดเรกทอรี

รีเซ็ต

void reset(
  WEAVE_ERROR aError
)

วิธีนี้รีเซ็ตตัวจัดการบริการกลับสู่สถานะเริ่มต้น

วิธีนี้รีเซ็ตสถานะผู้จัดการบริการทั้งหมด ซึ่งรวมถึงสถานะการสื่อสาร สถานะแคช และสถานะของคําขอเชื่อมต่อที่รอดําเนินการ

เมธอดเวอร์ชันนี้ (ที่นี่สําหรับความเข้ากันได้แบบย้อนหลัง) จะบันทึกและบันทึกข้อผิดพลาด จากนั้นเรียกใช้ reset(null)

รายละเอียด
พารามิเตอร์
[in] aError
ข้อผิดพลาดที่ทําให้การดําเนินการนี้เกิดขึ้น
ดูเพิ่มเติมที่
รีเซ็ต(เป็นโมฆะ)

รีเซ็ต

void reset(
  void
)

วิธีนี้รีเซ็ตตัวจัดการบริการกลับสู่สถานะเริ่มต้น

วิธีนี้รีเซ็ตสถานะผู้จัดการบริการทั้งหมด ซึ่งรวมถึงสถานะการสื่อสาร สถานะแคช และสถานะของคําขอเชื่อมต่อที่รอดําเนินการ

ดูเพิ่มเติม:
reset(WEhave_ERROR)

เลิกแก้ปัญหา

void unresolve(
  WEAVE_ERROR aError
)

การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้

เมธอดนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้ผู้จัดการบริการออกการค้นหาไดเรกทอรีของบริการในคําขอถัดไป

เมธอดเวอร์ชันนี้ (ที่นี่สําหรับความเข้ากันได้แบบย้อนหลัง) จะรับและบันทึกข้อผิดพลาด จากนั้นเรียก unresolve(null)

รายละเอียด
พารามิเตอร์
[in] aError
ข้อผิดพลาดที่ทําให้การดําเนินการนี้เกิดขึ้น
ดูเพิ่มเติม:
unresolve(null)

เลิกแก้ปัญหา

void unresolve(
  void
)

การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้

เมธอดนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้ผู้จัดการบริการออกการค้นหาไดเรกทอรีของบริการในคําขอถัดไป

ดูเพิ่มเติม:
unresolve(WEhave_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

วิธีนี้ทําลายอินสแตนซ์ WeaveServiceManager