nl:: Weave:: โปรไฟล์:: 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::OnConnectStartvoid(*
โค้ดเรียกกลับของแอปพลิเคชันเกิดขึ้นก่อนการสร้างการเชื่อมต่อ |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
โค้ดเรียกกลับของแอปพลิเคชันเพื่อทําเครื่องหมายเวลาของการค้นหาไดเรกทอรีบริการขาออก |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
โค้ดเรียกกลับของแอปพลิเคชันเพื่อแสดงค่าเวลาจากการตอบกลับไดเรกทอรีบริการ |
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
การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้
|
unresolve(void)
|
void
การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้
|
ชั้นเรียน |
|
---|---|
nl:: |
คลาสนี้แสดงธุรกรรมรายการเดียวที่จัดการโดยผู้จัดการบริการ |
ประเภทสาธารณะ
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)
โค้ดเรียกกลับของแอปพลิเคชันเพื่อแสดงค่าเวลาจากการตอบกลับไดเรกทอรีบริการ
ระบบจะเรียกใช้เมื่อเราได้รับข้อมูลเวลาจากการตอบกลับการค้นหาไดเรกทอรีบริการ โปรดทราบว่าการติดต่อกลับนี้จะเกิดขึ้นเฉพาะเมื่อแยกวิเคราะห์การตอบกลับได้สําเร็จและรวมข้อมูลเวลาแล้วเท่านั้น
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
รูทไดเรกทอรี
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
ฟังก์ชันตัวเข้าถึงสําหรับข้อมูลไดเรกทอรีราก
คุณต้องเริ่มต้นจากที่หนึ่ง และด้วยไดเรกทอรีบริการที่คุณจะต้องเริ่มต้นด้วยไดเรกทอรี stub ที่มีที่อยู่ของเซิร์ฟเวอร์ที่คุณสามารถแตะเพื่อทําทุกอย่างได้ เนื่องจากการจัดการและต้นทางของข้อมูลนี้มีแนวโน้มที่จะแตกต่างกันไปตามอุปกรณ์แต่ละเครื่อง เราจึงมีโค้ดเรียกกลับของผู้เข้าถึงที่นี่
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การคืนสินค้า |
WEhave_NO_ERROR สําเร็จ มิเช่นนั้นกระบวนการโหลดจะถูกยกเลิก
|
เครื่องจัดการสถานะ
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
เครื่องจัดการสําหรับเงื่อนไขข้อผิดพลาดและสถานะ
ผู้ใช้ผู้จัดการบริการอาจได้รับแจ้งให้ทราบถึงปัญหาในการพยายามส่งคําขอเชื่อมต่อด้วยวิธีใดวิธีหนึ่งใน 2 วิธีนี้ คุณอาจได้รับรายงานสถานะจากบริการหรืออาจได้รับ WEhave_ERROR ภายใน ไม่ว่าในกรณีใด ข้อมูลจะมาจากโค้ดเรียกกลับนี้
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
ฟังก์ชันสาธารณะ
ตั้งค่า ConnectConnectStartback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
กําหนดฟังก์ชันเรียกกลับโดยทันทีก่อนการสร้างการเชื่อมต่อ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
ผู้จัดการบริการ Weave
WeaveServiceManager( void )
วิธีการนี้จะเริ่มต้นอินสแตนซ์ WeaveServiceManager
โปรดทราบว่าคุณต้องเรียกใช้ init() เพื่อเริ่มอินสแตนซ์นี้เพิ่มเติม
ยกเลิก
void cancel( uint64_t aServiceEp, void *aAppState )
การดําเนินการนี้จะยกเลิกคําขอเชื่อมต่อ
วิธีนี้จะยกเลิกคําขอเชื่อมต่อที่ระบุรหัสปลายทางบริการและออบเจ็กต์สถานะแอปพลิเคชันที่ส่งผ่านในเวลาตามคําขอเป็นตัวระบุ หากนี่เป็นคําขอเชื่อมต่อครั้งสุดท้าย วิธีการนี้จะล้างสถานะการเชื่อมต่อไดเรกทอรีบริการที่รอดําเนินการด้วย
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
ล้างแคช
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()
คุณสามารถเรียกใช้เมธอดนี้ก่อนที่แคชในเครื่องจะมีข้อมูลจากข้อมูลที่จัดสรรไว้โดยค่าเริ่มต้น หรือการเดินทางไปยังไดเรกทอรีในไดเรกทอรี ผู้จัดการบริการจะจัดคิวคําขอก่อนที่จะระบุเนื้อหาแคชได้
รายละเอียด | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||
การคืนสินค้า |
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() และวิธีการอื่นๆ ได้
รายละเอียด | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||||||
การคืนสินค้า |
WEhave_ERROR_INVALID_sync หากอาร์กิวเมนต์ของฟังก์ชันไม่ถูกต้อง มิฉะนั้น WEhave_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 ที่เกี่ยวข้อง
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
วิธีนี้จัดการเหตุการณ์การเชื่อมต่อที่เสร็จสมบูรณ์สําหรับธุรกรรมการค้นหาปลายทางบริการ
สิ่งที่ทําได้มีดังนี้ ก่อนอื่น การเชื่อมต่ออาจล้มเหลวได้ในกรณีที่เราดําเนินการเสร็จสิ้น มิฉะนั้น การเชื่อมต่อจะเสร็จสมบูรณ์และสิ่งที่ต้องทําคือเปิดบริบทของ Exchange และส่งการค้นหาไดเรกทอรี
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
วิธีนี้จะจัดการข้อความตอบกลับในการสนทนากับบริการไดเรกทอรี
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
onResponseTimeout
void onResponseTimeout( void )
เมธอดนี้จะจัดการกับเหตุการณ์การหมดเวลา ซึ่งไม่ได้รับการตอบสนองจากบริการไดเรกทอรี
ย้ายตําแหน่ง
void relocate( WEAVE_ERROR aError )
วิธีการนี้จะย้ายแคชไดเรกทอรีบริการ
เมื่อปลายทางบริการส่งคืนรายงานสถานะโดยมีรหัสสถานะ kStatus_Relocation แอปพลิเคชันอาจเรียกใช้ unresolve() เพื่อล้างแคชและยกเลิกคําขอการเชื่อมต่อ วิธีนี้ทําให้การจัดการข้อผิดพลาดง่ายขึ้นโดยเรียกใช้ unresolve() ในครั้งแรก และ reset() หากยังแก้ปัญหาไม่ได้
สําหรับเมธอดนี้ สําหรับความเข้ากันได้แบบย้อนหลัง จะรับและบันทึกข้อผิดพลาด จากนั้นเรียก relocate(null)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
ย้ายที่อยู่(เป็นโมฆะ)
ย้ายตําแหน่ง
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)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
รีเซ็ต(เป็นโมฆะ)
รีเซ็ต
void reset( void )
วิธีนี้รีเซ็ตตัวจัดการบริการกลับสู่สถานะเริ่มต้น
วิธีนี้รีเซ็ตสถานะผู้จัดการบริการทั้งหมด ซึ่งรวมถึงสถานะการสื่อสาร สถานะแคช และสถานะของคําขอเชื่อมต่อที่รอดําเนินการ
ดูเพิ่มเติม:reset(WEhave_ERROR)
เลิกแก้ปัญหา
void unresolve( WEAVE_ERROR aError )
การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้
เมธอดนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้ผู้จัดการบริการออกการค้นหาไดเรกทอรีของบริการในคําขอถัดไป
เมธอดเวอร์ชันนี้ (ที่นี่สําหรับความเข้ากันได้แบบย้อนหลัง) จะรับและบันทึกข้อผิดพลาด จากนั้นเรียก unresolve(null)
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
unresolve(null)
เลิกแก้ปัญหา
void unresolve( void )
การดําเนินการนี้จะทําให้แคชของไดเรกทอรีบริการใช้งานไม่ได้
เมธอดนี้จะตั้งค่าสถานะแคชของไดเรกทอรีบริการเพื่อให้ผู้จัดการบริการออกการค้นหาไดเรกทอรีของบริการในคําขอถัดไป
ดูเพิ่มเติม:unresolve(WEhave_ERROR)