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(*
Callback ของแอปพลิเคชันเพื่อส่งค่าเวลาจากการตอบสนองของ 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
ตั้งค่าให้เรียกใช้ฟังก์ชัน Callback ทันทีก่อนที่จะสร้างการเชื่อมต่อ
|
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 Exchange ที่เกี่ยวข้อง
|
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
วิธีการนี้จะทำให้แคช Service Directory ใช้งานไม่ได้
|
unresolve(void)
|
void
วิธีการนี้จะทำให้แคช Service Directory ใช้งานไม่ได้
|
ชั้นเรียน |
|
---|---|
nl:: |
คลาสนี้แสดงถึงธุรกรรมเดียวที่จัดการโดยผู้จัดการบริการ |
ประเภทสาธารณะ
@303
@303
พร็อพเพอร์ตี้ | |
---|---|
kWeave_DefaultSendTimeout
|
จำนวนมิลลิวินาทีที่ต้องมีการตอบกลับสำหรับการค้นหาไดเรกทอรีก่อนที่บริบทของ Exchange จะหมดเวลา |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
การเรียกกลับของแอปพลิเคชันที่ดำเนินการทันทีก่อนดำเนินการเชื่อมต่อ
แอปพลิเคชันสามารถใช้ Callback นี้เพื่อสังเกตการณ์และเปลี่ยนอาร์กิวเมนต์ที่ส่งผ่านไปยัง #WeaveConnection::Connect() ระหว่างการสร้างการเชื่อมต่อบริการ ระบบจะเรียกใช้ Callback นี้ทั้งสำหรับการเชื่อมต่อกับปลายทางบริการเป้าหมายและการเชื่อมต่อกับปลายทางของ Service Directory ในกรณีที่ต้องมีการค้นหาไดเรกทอรี
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Callback ของแอปพลิเคชันเพื่อระบุเวลาของการค้นหาไดเรกทอรีบริการขาออก
ซึ่งเรียกว่าเมื่อเรากำลังจะส่งคำขอการค้นหาปลายทางของบริการ ซึ่งจะใช้จับคู่กับ OnServiceEndpointQueryEnd เพื่อชดเชยเวลาแสดงของข้อความ
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Callback ของแอปพลิเคชันเพื่อส่งค่าเวลาจากการตอบสนองของ Service Directory
การเรียกกลับนี้จะเกิดขึ้นเมื่อเราได้รับข้อมูลเวลาจากการตอบกลับการค้นหาไดเรกทอรีบริการ โปรดทราบว่าการเรียกกลับนี้จะเกิดขึ้นเฉพาะในกรณีที่มีการแยกวิเคราะห์การตอบกลับสำเร็จและรวมข้อมูลเวลาไว้ด้วย
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
ฟังก์ชันตัวเข้าถึงสำหรับข้อมูลไดเรกทอรีราก
คุณจะต้องเริ่มต้นจากที่ไหนสักแห่ง และด้วยไดเรกทอรีบริการ คุณจะต้องเริ่มต้นด้วยไดเรกทอรี stub ที่มีที่อยู่ของเซิร์ฟเวอร์ที่คุณสามารถกดเพื่อรับที่อื่นๆ ที่เหลือ เนื่องจากการจัดการและแหล่งที่มาของข้อมูลนี้มีแนวโน้มที่จะแตกต่างกันไปในแต่ละอุปกรณ์ เราจึงมีการเรียกกลับของผู้เข้าถึงที่นี่
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
WEAVE_NO_ERROR สำเร็จ มิเช่นนั้นกระบวนการโหลดจะถูกยกเลิก
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
ตัวจัดการสำหรับเงื่อนไขข้อผิดพลาดและสถานะ
ผู้ใช้ของผู้ดูแลบริการอาจได้รับแจ้งถึงปัญหาในการพยายามดำเนินการตามคำขอเชื่อมต่อด้วยวิธีใดวิธีหนึ่งจาก 2 วิธี โดยอาจได้รับรายงานสถานะจากบริการ หรืออาจได้รับ WEAVE_ERROR ที่สร้างขึ้นภายใน ไม่ว่าในกรณีใด ข้อมูลจะมาจาก Callback นี้
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
ฟังก์ชันสาธารณะ
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
ตั้งค่าให้เรียกใช้ฟังก์ชัน Callback ทันทีก่อนที่จะสร้างการเชื่อมต่อ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
WeaveServiceManager
WeaveServiceManager( void )
เมธอดนี้จะเริ่มต้นอินสแตนซ์ WeaveServiceManager
โปรดทราบว่าต้องเรียกใช้ init() เพื่อเริ่มต้นอินสแตนซ์นี้เพิ่มเติม
ยกเลิก
void cancel( uint64_t aServiceEp, void *aAppState )
วิธีนี้จะยกเลิกคำขอเชื่อมต่อ
วิธีนี้จะยกเลิกคำขอเชื่อมต่อที่ระบุรหัสปลายทางของบริการและออบเจ็กต์สถานะแอปพลิเคชันที่ส่งผ่านเป็นตัวระบุ ณ เวลาที่ส่งคำขอ หากเป็นคำขอเชื่อมต่อสุดท้าย วิธีนี้จะล้างสถานะการเชื่อมต่อไดเรกทอรีบริการที่รอดำเนินการทั้งหมดด้วย
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
clearCache
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()
วิธีการนี้สามารถเรียกใช้ได้ก่อนที่แคชในเครื่องจะเติมข้อมูลจากข้อมูลที่จัดสรรเริ่มต้นหรือการเดินทางไปยังบริการไดเรกทอรี ผู้จัดการบริการจะจัดคิวคำขอก่อนที่จะระบุเนื้อหาแคชได้
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
การคืนสินค้า |
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 )
วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสำหรับปลายทางบริการ
หากแก้ไขไดเรกทอรีบริการแล้ว กล่าวคือ หากมีการดำเนินการ connect() สำเร็จ วิธีนี้จะเติมออบเจ็กต์ HostPortList ที่ให้มา
หมายเหตุ: HostPortList เชื่อมโยงกับออบเจ็กต์ WeaveServiceManager แคชของไดเรกทอรีบริการจะยังคงมีผลจนกว่าจะมีการล้างแคชของไดเรกทอรีบริการ หรือจนกว่าจะเกิดการค้นหาไดเรกทอรีบริการอื่น
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
ผลลัพธ์ |
|
การค้นหา
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
วิธีนี้จะค้นหาข้อมูลไดเรกทอรีสำหรับปลายทางบริการ
หากไดเรกทอรีบริการได้รับการแก้ไขแล้ว เช่น หากมีการดำเนินการ connect() สำเร็จ วิธีนี้จะส่งกลับรายการไดเรกทอรีที่มีตัวระบุปลายทางของบริการ
เมธอดนี้จะแสดงรายละเอียดการใช้งานภายในของไดเรกทอรีบริการ การใช้งานควรเหมาะสำหรับการใช้ตัวแปรของเมธอดนี้ที่สร้าง HostPortList
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
ผลลัพธ์ |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
วิธีนี้จะจัดการเหตุการณ์ปิดการเชื่อมต่อที่รายงานโดยบริบทของ Weave Exchange ที่เกี่ยวข้อง
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
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_Reจะช่วย ให้แอปพลิเคชันสามารถเรียกใช้ unresolve() เพื่อล้างแคชและยกเลิกคำขอการเชื่อมต่อ วิธีนี้ทำให้การจัดการข้อผิดพลาดง่ายขึ้นโดยการเรียกใช้ unresolve() เป็นครั้งแรก และใช้ reset() หากปัญหายังไม่ได้รับการแก้ไข
เมธอดในเวอร์ชันนี้ (สำหรับความเข้ากันได้แบบย้อนหลัง) จะบันทึกข้อผิดพลาดแล้วเรียกใช้ relocate(void)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
relocate(void)
ย้ายที่อยู่
void relocate( void )
เมธอดนี้จะย้ายแคชของไดเรกทอรีบริการ
เมื่อปลายทางบริการแสดงรายงานสถานะที่มีรหัสสถานะ kStatus_Reจะช่วย ให้แอปพลิเคชันสามารถเรียกใช้ 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 )
เมธอดนี้จะรีเซ็ตตัวจัดการบริการกลับสู่สถานะเริ่มต้น
เมธอดนี้จะรีเซ็ตสถานะของ Service Manager ทั้งหมด ซึ่งรวมถึงสถานะการสื่อสาร สถานะแคช และสถานะของคำขอเชื่อมต่อที่รอดำเนินการ
เมธอดในเวอร์ชันนี้ (สำหรับความเข้ากันได้แบบย้อนหลัง) จะบันทึกข้อผิดพลาดแล้วเรียกใช้ reset(void)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
รีเซ็ต(เป็นโมฆะ)
รีเซ็ต
void reset( void )
เมธอดนี้จะรีเซ็ตตัวจัดการบริการกลับสู่สถานะเริ่มต้น
เมธอดนี้จะรีเซ็ตสถานะของ Service Manager ทั้งหมด ซึ่งรวมถึงสถานะการสื่อสาร สถานะแคช และสถานะของคำขอเชื่อมต่อที่รอดำเนินการ
ดูเพิ่มเติมรีเซ็ต(WEAVE_ERROR)
แก้ปัญหาไม่ได้
void unresolve( WEAVE_ERROR aError )
วิธีการนี้จะทำให้แคช Service Directory ใช้งานไม่ได้
วิธีนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้เครื่องมือจัดการบริการออกการค้นหาไดเรกทอรีบริการในคำขอถัดไป
เมธอดในเวอร์ชันนี้ (สำหรับความเข้ากันได้แบบย้อนหลัง) จะบันทึกข้อผิดพลาดแล้วเรียกใช้ unresolve(void)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
แก้ไข(โมฆะ)
แก้ปัญหาไม่ได้
void unresolve( void )
วิธีการนี้จะทำให้แคช Service Directory ใช้งานไม่ได้
วิธีนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้เครื่องมือจัดการบริการออกการค้นหาไดเรกทอรีบริการในคำขอถัดไป
ดูเพิ่มเติมunresolve(WEAVE_ERROR)