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