nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
ออบเจ็กต์เครื่องมือจัดการสำหรับไดเรกทอรีบริการ Weave
สรุป
เครื่องมือจัดการบริการ Weave คืออินเทอร์เฟซหลักสำหรับแอปพลิเคชันไปยังบริการไดเรกทอรี ด้วยเหตุนี้ ระบบจะซ่อนข้อมูลแทรกที่มีอยู่ในการค้นหารายการไดเรกทอรีที่เชื่อมโยงกับปลายทางของบริการ ทำการค้นหา DNS ในชื่อโฮสต์อย่างน้อย 1 ชื่อที่พบที่นั่น การพยายามเชื่อมต่อ ทำให้การเชื่อมต่อปลอดภัย และอื่นๆ และยังจัดการแคชของข้อมูลไดเรกทอรีบริการด้วย
ผู้ผลิตและผู้ทำลาย |
|
---|---|
WeaveServiceManager(void)
เมธอดนี้จะเริ่มต้นอินสแตนซ์ WeaveServiceManager
|
|
~WeaveServiceManager(void)
เมธอดนี้จะทำลายอินสแตนซ์ WeaveServiceManager
|
ประเภทสาธารณะ |
|
---|---|
@303{
|
enum |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
การเรียกกลับของแอปพลิเคชันจะเกิดขึ้นทันทีก่อนที่จะเริ่มต้นการเชื่อมต่อ |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
โค้ดเรียกกลับของแอปพลิเคชันเพื่อทำเครื่องหมายเวลาสำหรับการค้นหาไดเรกทอรีบริการขาออก |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
โค้ดเรียกกลับของแอปพลิเคชันเพื่อส่งค่าเวลาจากการตอบกลับ Service Directory |
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::StatusHandlervoid(*
เครื่องจัดการสำหรับข้อผิดพลาดและเงื่อนไขสถานะ |
ฟังก์ชันสาธารณะ |
|
---|---|
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
เมธอดนี้จัดการเหตุการณ์ปิดการเชื่อมต่อที่รายงานโดยบริบท Exchange ของ 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:: |
คลาสนี้แสดงธุรกรรมรายการเดียวที่จัดการโดยผู้ดูแลบริการ |
ประเภทสาธารณะ
@303
@303
พร็อพเพอร์ตี้ | |
---|---|
kWeave_DefaultSendTimeout
|
จำนวนมิลลิวินาทีที่ต้องได้รับการตอบสนองสำหรับการค้นหาไดเรกทอรีก่อนที่บริบทของ Exchange จะหมดเวลา |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
การเรียกกลับของแอปพลิเคชันจะเกิดขึ้นทันทีก่อนที่จะเริ่มต้นการเชื่อมต่อ
แอปพลิเคชันจะใช้โค้ดเรียกกลับนี้เพื่อสังเกตและเปลี่ยนแปลงอาร์กิวเมนต์ที่ส่งผ่านไปยัง #WeaveConnection::Connect() ระหว่างการสร้างการเชื่อมต่อบริการ ระบบจะเรียกใช้โค้ดเรียกกลับนี้สำหรับการเชื่อมต่อกับปลายทางบริการเป้าหมาย รวมถึงการเชื่อมต่อกับปลายทาง Service Directory ในกรณีที่ต้องมีการค้นหาไดเรกทอรี
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
โค้ดเรียกกลับของแอปพลิเคชันเพื่อทำเครื่องหมายเวลาสำหรับการค้นหาไดเรกทอรีบริการขาออก
โดยระบบจะเรียกการดำเนินการนี้เมื่อเรากำลังจะส่งคำขอค้นหาปลายทางของบริการออกไป ซึ่งใช้ในการจับคู่กับ OnServiceEndpointQueryEnd เพื่อชดเชยเวลาในการแสดงโฆษณาของข้อความ
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
โค้ดเรียกกลับของแอปพลิเคชันเพื่อส่งค่าเวลาจากการตอบกลับ Service Directory
ระบบจะเรียกใช้ข้อมูลนี้เมื่อเราได้รับข้อมูลเวลาจากคําตอบของคำค้นหา Service Directory โปรดทราบว่าการติดต่อกลับนี้จะเกิดขึ้นก็ต่อเมื่อมีการแยกวิเคราะห์การตอบกลับสำเร็จและมีข้อมูลเวลารวมอยู่ด้วยเท่านั้น
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
ฟังก์ชันตัวเข้าถึงสำหรับข้อมูลไดเรกทอรีราก
คุณต้องเริ่มต้นจากที่ใดก็ได้ และด้วย Service Directory คุณต้องเริ่มต้นด้วยไดเรกทอรีสตับที่มีที่อยู่ของเซิร์ฟเวอร์ที่คุณสามารถกดเพื่อดูอย่างอื่นทั้งหมด เนื่องจากการจัดการและแหล่งที่มาของข้อมูลนี้มักจะแตกต่างกันไปในแต่ละอุปกรณ์ เราจึงใส่โค้ดเรียกกลับของผู้เข้าถึงไว้ที่นี่
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
WEAVE_NO_ERROR เมื่อสำเร็จแล้ว มิเช่นนั้นกระบวนการโหลดจะถูกยกเลิก
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
เครื่องจัดการสำหรับข้อผิดพลาดและเงื่อนไขสถานะ
ผู้ใช้ของผู้ดูแลบริการอาจได้รับแจ้งว่ามีปัญหาในการพยายามส่งคำขอเชื่อมต่อด้วยวิธีใดวิธีหนึ่งจาก 2 วิธี บริการอาจได้รับรายงานสถานะจากบริการหรืออาจได้รับ WEAVE_ERROR ที่สร้างขึ้นภายใน ในทั้งสองกรณี ข้อมูลจะมาจากการเรียกกลับนี้
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
ฟังก์ชันสาธารณะ
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
ตั้งค่าฟังก์ชันเรียกกลับที่จะเรียกใช้ทันทีก่อนสร้างการเชื่อมต่อ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
WeaveServiceManager
WeaveServiceManager( void )
เมธอดนี้จะเริ่มต้นอินสแตนซ์ WeaveServiceManager
โปรดทราบว่าต้องมีการเรียก init() เพื่อเริ่มต้นอินสแตนซ์นี้เพิ่มเติม
ยกเลิก
void cancel( uint64_t aServiceEp, void *aAppState )
วิธีนี้จะยกเลิกคำขอเชื่อมต่อ
วิธีนี้จะยกเลิกคำขอเชื่อมต่อที่ระบุรหัสปลายทางของบริการและออบเจ็กต์สถานะแอปพลิเคชันที่ส่งมาในเวลาที่ขอเป็นตัวระบุ หากเป็นคำขอเชื่อมต่อล่าสุด วิธีนี้จะล้างสถานะการเชื่อมต่อไดเรกทอรีบริการที่รอดำเนินการด้วย
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
clearCache
void clearCache( void )
เมธอดนี้จะล้างสถานะและแคชของเครื่องมือจัดการ หากสถานะอยู่ในสถานะ kServiceMgrState_Resolved เทอร์มินัล ซึ่งหมายความว่าระบบได้รับการตอบสนองจากปลายทาง Service Directory แล้ว
connect
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()
คุณสามารถเรียกใช้เมธอดนี้ก่อนที่จะมีการเติมข้อมูลจากแคชในเครื่องด้วยข้อมูลจากข้อมูลที่จัดสรรเริ่มต้นหรือการเดินทางไปยังบริการไดเรกทอรี Service Manager จะจัดคิวคำขอก่อนที่จะระบุเนื้อหาแคชได้
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
การส่งคืน |
WEAVE_NO_ERROR อาจเป็นโค้ดที่สำเร็จ หรือรหัสข้อผิดพลาดที่เกี่ยวข้อง
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
วิธีนี้จะเริ่มต้นออบเจ็กต์ตัวจัดการบริการ
โดยจะต้องเริ่มต้นออบเจ็กต์ Service Manager ก่อนจึงจะใช้งานได้ หลังจากเรียกเมธอดนี้สำเร็จ ไคลเอ็นต์จะเริ่มเรียกใช้ connect(), lookup() และเมธอดอื่นๆ ได้
รายละเอียด | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||
การส่งคืน |
WEAVE_ERROR_INVALID_ARGUMENT หากอาร์กิวเมนต์ของฟังก์ชันไม่ถูกต้อง ไม่เช่นนั้น ให้ใช้ WEAVE_NO_ERROR
|
การค้นหา
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสำหรับปลายทางของบริการ
หาก Service Directory ได้รับการแก้ไข เช่น ที่ดำเนินการ connect() สำเร็จ เมธอดนี้จะเติมข้อมูลออบเจ็กต์ HostPortList ที่ให้ไว้
หมายเหตุ: HostPortList จะผูกกับออบเจ็กต์ WeaveServiceManager และจะยังคงใช้งานได้จนกว่าจะมีการล้างแคชไดเรกทอรีบริการ หรือจนกว่าจะมีการค้นหาไดเรกทอรีบริการเกิดขึ้น
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
การค้นหา
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสำหรับปลายทางของบริการ
หาก Service Directory ได้รับการแก้ไข เช่น ที่ดำเนินการ connect() สำเร็จ เมธอดนี้จะแสดงรายการไดเรกทอรีที่มีตัวระบุปลายทางของบริการ
เมธอดนี้จะแสดงรายละเอียดการใช้งานภายในของไดเรกทอรีบริการ ส่วนการติดตั้งใช้งานควรมีประโยชน์อย่างยิ่งในการใช้เวอร์ชันของเมธอดนี้ซึ่งสร้าง HostPortList
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
เมธอดนี้จัดการเหตุการณ์ปิดการเชื่อมต่อที่รายงานโดยบริบท Exchange ของ Weave ที่เกี่ยวข้อง
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
เมธอดนี้จะจัดการเหตุการณ์การเชื่อมต่อที่เสร็จสมบูรณ์สำหรับธุรกรรมการค้นหาปลายทางบริการ
มี 2 สาเหตุที่เป็นไปได้ อย่างแรก การเชื่อมต่ออาจล้มเหลวในกรณีที่เราแก้ไขเสร็จ ไม่เช่นนั้น การเชื่อมต่อจะเสร็จสมบูรณ์และเราต้องการเปิดบริบทของ Exchange แล้วส่งการค้นหาไดเรกทอรี
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
วิธีนี้จะจัดการข้อความตอบกลับในการสนทนาด้วยบริการไดเรกทอรี
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
onResponseTimeout
void onResponseTimeout( void )
วิธีนี้จะจัดการเหตุการณ์การหมดเวลา ซึ่งไม่มีการตอบสนองจากบริการไดเรกทอรี
ย้าย
void relocate( WEAVE_ERROR aError )
วิธีนี้จะย้ายแคชไดเรกทอรีบริการใหม่
เมื่อปลายทางบริการแสดงผลรายงานสถานะที่มีรหัสสถานะ kStatus_Replacement แอปพลิเคชันอาจเรียกใช้ unresolve() เพื่อล้างแคชและยกเลิกคำขอการเชื่อมต่อ วิธีนี้ทำให้การจัดการข้อผิดพลาดง่ายขึ้นโดยการเรียกใช้ unresolve() ในครั้งแรก และเรียก reset() หากปัญหายังไม่ได้รับการแก้ไข
เมธอดเวอร์ชันนี้ ใช้สำหรับความเข้ากันได้แบบย้อนหลัง โดยจะทำและบันทึกข้อผิดพลาด จากนั้นจะเรียกใช้ relocate(void)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
relocate(void)
ย้าย
void relocate( void )
วิธีนี้จะย้ายแคชไดเรกทอรีบริการใหม่
เมื่อปลายทางบริการแสดงผลรายงานสถานะที่มีรหัสสถานะ kStatus_Replacement แอปพลิเคชันอาจเรียกใช้ unresolve() เพื่อล้างแคชและยกเลิกคำขอการเชื่อมต่อ วิธีนี้ทำให้การจัดการข้อผิดพลาดง่ายขึ้นโดยการเรียกใช้ unresolve() ในครั้งแรก และเรียก reset() หากปัญหายังไม่ได้รับการแก้ไข
ดูเพิ่มเติม:ย้ายตำแหน่ง(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
เพิ่มรายการไดเรกทอรีการลบล้างของชื่อโฮสต์และรหัสพอร์ตไว้ที่จุดเริ่มต้นของรายการไดเรกทอรี
ตั้งค่าใหม่
void reset( WEAVE_ERROR aError )
วิธีนี้จะรีเซ็ตตัวจัดการบริการเป็นสถานะเริ่มต้น
เมธอดนี้จะรีเซ็ตสถานะเครื่องมือจัดการบริการทั้งหมด รวมถึงสถานะการสื่อสาร สถานะแคช และสถานะของคำขอเชื่อมต่อที่รอดำเนินการ
เมธอดเวอร์ชันนี้ ใช้สำหรับความเข้ากันได้แบบย้อนหลัง โดยจะเรียกใช้และบันทึกข้อผิดพลาด จากนั้นจะเรียกใช้ reset(void)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
reset(void)
ตั้งค่าใหม่
void reset( void )
วิธีนี้จะรีเซ็ตตัวจัดการบริการเป็นสถานะเริ่มต้น
เมธอดนี้จะรีเซ็ตสถานะเครื่องมือจัดการบริการทั้งหมด รวมถึงสถานะการสื่อสาร สถานะแคช และสถานะของคำขอเชื่อมต่อที่รอดำเนินการ
ดูเพิ่มเติม:reset(WEAVE_ERROR)
ไม่แก้ไข
void unresolve( WEAVE_ERROR aError )
เมธอดนี้จะทำให้แคชไดเรกทอรีบริการเป็นโมฆะ
เมธอดนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้ตัวจัดการบริการส่งคำขอไดเรกทอรีบริการออกในคำขอถัดไป
เมธอดเวอร์ชันนี้ สำหรับความเข้ากันได้แบบย้อนหลัง คือ รับและบันทึกข้อมูลข้อผิดพลาด จากนั้นจะมีการเรียกใช้ unresolve(void)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
unresolve(void)
ไม่แก้ไข
void unresolve( void )
เมธอดนี้จะทำให้แคชไดเรกทอรีบริการเป็นโมฆะ
เมธอดนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้ตัวจัดการบริการส่งคำขอไดเรกทอรีบริการออกในคำขอถัดไป
ดูเพิ่มเติม:ไม่ได้รับการแก้ไข(WEAVE_ERROR)