nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Đối tượng trình quản lý của thư mục dịch vụ Weave.
Tóm tắt
Trình quản lý dịch vụ Weave là giao diện chính dành cho các ứng dụng vào dịch vụ thư mục. Do đó, công cụ này ẩn đi các chức năng vốn có trong việc tra cứu mục nhập thư mục liên kết với điểm cuối dịch vụ, thực hiện tra cứu DNS trên một hoặc nhiều tên máy chủ lưu trữ ở đó, cố gắng kết nối, bảo mật kết nối, v.v. Ứng dụng này cũng có thể quản lý bộ nhớ đệm chứa thông tin thư mục dịch vụ.
Hàm khởi tạo và phá huỷ |
|
---|---|
WeaveServiceManager(void)
Phương thức này sẽ khởi chạy thực thể WeaveServiceManager.
|
|
~WeaveServiceManager(void)
Phương thức này sẽ huỷ thực thể WeaveServiceManager.
|
Loại công khai |
|
---|---|
@303{
|
enum |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Lệnh gọi lại ứng dụng được thực hiện ngay trước khi thiết lập kết nối. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
Lệnh gọi lại ứng dụng để đánh dấu thời gian của một truy vấn thư mục dịch vụ gửi đi. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Lệnh gọi lại của ứng dụng để cung cấp giá trị thời gian từ phản hồi thư mục dịch vụ. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Hàm truy cập cho thông tin thư mục gốc. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Một trình xử lý lỗi và các điều kiện trạng thái. |
Hàm công khai |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Đặt một hàm callback sẽ được gọi ngay trước khi thiết lập kết nối.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Phương thức này sẽ huỷ một yêu cầu kết nối.
|
clearCache(void)
|
void
Phương thức này sẽ xoá trạng thái và bộ nhớ đệm của trình quản lý nếu trạng thái nằm trong trạng thái kServiceMgrState_Resolve của thiết bị đầu cuối, tức là đã nhận được phản hồi từ điểm cuối Thư mục dịch vụ.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
Phương thức này yêu cầu kết nối với một dịch vụ Weave.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
Phương thức này khởi chạy đối tượng trình quản lý dịch vụ.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
Phương thức này tra cứu thông tin thư mục của một điểm cuối dịch vụ.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Phương thức này tra cứu thông tin thư mục của một điểm cuối dịch vụ.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Phương thức này xử lý sự kiện đóng kết nối theo báo cáo của ngữ cảnh trao đổi Weave được liên kết.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Phương thức này xử lý sự kiện kết nối đã hoàn tất đối với giao dịch truy vấn điểm cuối của dịch vụ.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Phương thức này xử lý mọi thư phản hồi trong cuộc trò chuyện với dịch vụ thư mục.
|
onResponseTimeout(void)
|
void
Phương thức này xử lý sự kiện hết thời gian chờ khi dịch vụ thư mục không nhận được phản hồi nào.
|
relocate(WEAVE_ERROR aError)
|
void
Phương thức này sẽ chuyển vị trí bộ nhớ đệm của thư mục dịch vụ.
|
relocate(void)
|
void
Phương thức này sẽ chuyển vị trí bộ nhớ đệm của thư mục dịch vụ.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
Thêm mục nhập thư mục ghi đè của tên máy chủ và mã cổng ở đầu danh sách thư mục.
|
reset(WEAVE_ERROR aError)
|
void
Phương thức này sẽ đặt lại trình quản lý dịch vụ về trạng thái ban đầu.
|
reset(void)
|
void
Phương thức này sẽ đặt lại trình quản lý dịch vụ về trạng thái ban đầu.
|
unresolve(WEAVE_ERROR aError)
|
void
Phương thức này sẽ làm mất hiệu lực bộ nhớ đệm của thư mục dịch vụ.
|
unresolve(void)
|
void
Phương thức này sẽ làm mất hiệu lực bộ nhớ đệm của thư mục dịch vụ.
|
Lớp |
|
---|---|
nl:: |
Lớp này biểu thị một giao dịch duy nhất do trình quản lý dịch vụ quản lý. |
Loại công khai
@303
@303
Thuộc tính | |
---|---|
kWeave_DefaultSendTimeout
|
Số mili giây mà một phản hồi phải nhận được cho truy vấn thư mục trước khi ngữ cảnh trao đổi hết thời gian chờ. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Lệnh gọi lại ứng dụng được thực hiện ngay trước khi thiết lập kết nối.
Các ứng dụng có thể sử dụng lệnh gọi lại này để quan sát và thay đổi tuỳ ý các đối số được truyền đến #WeaveConnection::Connect() trong quá trình thiết lập kết nối dịch vụ. Lệnh gọi lại này sẽ được gọi cho cả trường hợp kết nối tới điểm cuối của dịch vụ đích, cũng như cho kết nối tới điểm cuối Thư mục dịch vụ trong trường hợp phải tra cứu thư mục.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Lệnh gọi lại ứng dụng để đánh dấu thời gian của một truy vấn thư mục dịch vụ gửi đi.
Lệnh này được gọi khi chúng ta sắp gửi yêu cầu truy vấn điểm cuối dịch vụ. Thông tin này dùng để khớp với OnServiceEndpointQueryEnd nhằm bù đắp thời gian bay của thông báo.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Lệnh gọi lại của ứng dụng để cung cấp giá trị thời gian từ phản hồi thư mục dịch vụ.
Lệnh này được gọi khi chúng ta nhận được thông tin về thời gian từ phản hồi truy vấn thư mục dịch vụ. Lưu ý rằng lệnh gọi lại này sẽ chỉ xảy ra nếu một phản hồi được phân tích cú pháp thành công và có bao gồm thông tin thời gian
Chi tiết | |||||
---|---|---|---|---|---|
Tham số |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Hàm truy cập cho thông tin thư mục gốc.
Bạn phải bắt đầu từ một nơi nào đó và với thư mục dịch vụ, bạn phải bắt đầu bằng một thư mục mã giả lập chứa địa chỉ máy chủ mà bạn có thể truy cập để truy cập vào mọi dữ liệu khác. Do cách bố trí và nguồn gốc của thông tin này có thể khác nhau giữa các thiết bị, nên chúng tôi cung cấp một lệnh gọi lại trình truy cập tại đây.
Chi tiết | |||||
---|---|---|---|---|---|
Tham số |
|
||||
Trả về |
WEAVE_NO_ERROR khi thành công, nếu không quá trình tải sẽ bị huỷ.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Một trình xử lý lỗi và các điều kiện trạng thái.
Người dùng của trình quản lý dịch vụ có thể được thông báo về các sự cố khi cố gắng thực thi yêu cầu kết nối theo một trong hai cách. Có thể nhận được báo cáo trạng thái từ dịch vụ hoặc nhận được WEAVE_ERROR được tạo nội bộ. Trong cả hai trường hợp, thông tin đều được truyền qua lệnh gọi lại này.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
Hàm công khai
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Đặt một hàm callback sẽ được gọi ngay trước khi thiết lập kết nối.
Chi tiết | |||
---|---|---|---|
Tham số |
|
WeaveServiceManager
WeaveServiceManager( void )
Phương thức này sẽ khởi chạy thực thể WeaveServiceManager.
Lưu ý là phải gọi init() để khởi chạy thêm thực thể này.
hủy
void cancel( uint64_t aServiceEp, void *aAppState )
Phương thức này sẽ huỷ một yêu cầu kết nối.
Phương thức này sẽ huỷ một yêu cầu kết nối dựa trên mã nhận dạng điểm cuối của dịch vụ và đối tượng trạng thái ứng dụng được truyền vào tại thời điểm yêu cầu dưới dạng giá trị nhận dạng. Nếu đó là yêu cầu kết nối gần đây nhất, thì phương thức này cũng sẽ xoá mọi trạng thái kết nối thư mục dịch vụ đang chờ xử lý.
Chi tiết | |||||
---|---|---|---|---|---|
Tham số |
|
clearCache
void clearCache( void )
Phương thức này sẽ xoá trạng thái và bộ nhớ đệm của trình quản lý nếu trạng thái nằm trong trạng thái kServiceMgrState_Resolve của thiết bị đầu cuối, tức là đã nhận được phản hồi từ điểm cuối Thư mục dịch vụ.
kết nối
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
Phương thức này yêu cầu kết nối với một dịch vụ Weave.
Đây là cuộc gọi kết nối cấp cao nhất. Về cơ bản, công cụ này tạo ra một kết nối bảo mật đến dịch vụ Weave dựa trên một điểm cuối dịch vụ và một chế độ xác thực hoặc các mạng cố định.
Phương thức này chỉ có thể được gọi sau khi bạn gọi hàm init() thành công và cancel() có thể huỷ yêu cầu kết nối.
Phương thức này có thể được gọi trước khi bộ nhớ đệm cục bộ điền dữ liệu từ dữ liệu được cấp phép mặc định hoặc một chuyến đi đến dịch vụ thư mục. Trình quản lý dịch vụ sẽ chỉ đưa yêu cầu vào hàng đợi trước khi có thể xác định nội dung bộ nhớ đệm.
Chi tiết | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tham số |
|
||||||||||||||
Trả về |
WEAVE_NO_ERROR khi thành công; nếu không sẽ tạo ra mã lỗi tương ứng.
|
khởi tạo
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
Phương thức này khởi chạy đối tượng trình quản lý dịch vụ.
Để sử dụng, bạn phải khởi chạy một đối tượng trình quản lý dịch vụ. Sau khi gọi phương thức này thành công, ứng dụng có thể bắt đầu gọi connect(), lookup() và các phương thức khác.
Chi tiết | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tham số |
|
||||||||||||||||
Trả về |
WEAVE_ERROR_INVALID_ARGUMENT nếu đối số của hàm không hợp lệ; nếu không thì sẽ xảy ra lỗi WEAVE_NO_ERROR.
|
tìm kiếm
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Phương thức này tra cứu thông tin thư mục của một điểm cuối dịch vụ.
Nếu thư mục dịch vụ đã được phân giải, tức là nếu có một thao tác connect() thành công, thì phương thức này sẽ điền đối tượng HostPortList đã cung cấp.
Lưu ý: HostPortList được liên kết với đối tượng WeaveServiceManager; dịch vụ này vẫn hợp lệ cho đến khi bộ nhớ đệm thư mục dịch vụ bị xoá hoặc cho đến khi có một tra cứu thư mục dịch vụ khác.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
tìm kiếm
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Phương thức này tra cứu thông tin thư mục của một điểm cuối dịch vụ.
Nếu thư mục dịch vụ đã được phân giải, tức là nếu đã có một thao tác connect() thành công, thì phương thức này sẽ trả về một mục nhập thư mục dựa trên giá trị nhận dạng điểm cuối của dịch vụ.
Phương thức này sẽ hiển thị thông tin chi tiết về cách triển khai nội bộ thư mục dịch vụ. Các hoạt động triển khai nên được ưu tiên sử dụng bằng cách sử dụng biến thể của phương thức tạo ra HostPortList này.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Phương thức này xử lý sự kiện đóng kết nối theo báo cáo của ngữ cảnh trao đổi Weave được liên kết.
Chi tiết | |||
---|---|---|---|
Tham số |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Phương thức này xử lý sự kiện kết nối đã hoàn tất đối với giao dịch truy vấn điểm cuối của dịch vụ.
Có một vài khả năng. Trước tiên, có thể không kết nối được. Trong trường hợp đó, chúng ta đã hoàn tất. Nếu không, kết nối sẽ thực sự hoàn tất và những gì chúng ta muốn làm là mở ngữ cảnh trao đổi và gửi một truy vấn thư mục.
Chi tiết | |||
---|---|---|---|
Tham số |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Phương thức này xử lý mọi thư phản hồi trong cuộc trò chuyện với dịch vụ thư mục.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
onResponseTimeout
void onResponseTimeout( void )
Phương thức này xử lý sự kiện hết thời gian chờ khi dịch vụ thư mục không nhận được phản hồi nào.
chuyển nơi ở
void relocate( WEAVE_ERROR aError )
Phương thức này sẽ chuyển vị trí bộ nhớ đệm của thư mục dịch vụ.
Khi một điểm cuối dịch vụ trả về báo cáo trạng thái có mã trạng thái kStatus_Relocations, ứng dụng có thể gọi unresolve() để xoá bộ nhớ đệm và huỷ các yêu cầu kết nối. Phương thức này giúp đơn giản hoá việc xử lý lỗi bằng cách gọi unresolve() trong lần đầu và reset() nếu vấn đề chưa được giải quyết.
Phiên bản này của phương thức này (tại đây dành cho khả năng tương thích ngược) sẽ nhận và ghi lại lỗi rồi gọi relocate(void) .
Chi tiết | |||
---|---|---|---|
Tham số |
|
relocate(void)
chuyển nơi ở
void relocate( void )
Phương thức này sẽ chuyển vị trí bộ nhớ đệm của thư mục dịch vụ.
Khi một điểm cuối dịch vụ trả về báo cáo trạng thái có mã trạng thái kStatus_Relocations, ứng dụng có thể gọi unresolve() để xoá bộ nhớ đệm và huỷ các yêu cầu kết nối. Phương thức này giúp đơn giản hoá việc xử lý lỗi bằng cách gọi unresolve() trong lần đầu và reset() nếu vấn đề chưa được giải quyết.
Xem thêm:chuyển vị trí(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Thêm mục nhập thư mục ghi đè của tên máy chủ và mã cổng ở đầu danh sách thư mục.
Khôi phục tuỳ chọn tìm kiếm
void reset( WEAVE_ERROR aError )
Phương thức này sẽ đặt lại trình quản lý dịch vụ về trạng thái ban đầu.
Phương thức này sẽ đặt lại tất cả trạng thái của trình quản lý dịch vụ, bao gồm cả trạng thái giao tiếp, trạng thái bộ nhớ đệm và trạng thái của mọi yêu cầu kết nối đang chờ xử lý.
Phiên bản này của phương thức này (tại đây dành cho khả năng tương thích ngược) sẽ nhận và ghi lại lỗi sau đó gọi reset(void) .
Chi tiết | |||
---|---|---|---|
Tham số |
|
reset(vô hiệu)
Khôi phục tuỳ chọn tìm kiếm
void reset( void )
Phương thức này sẽ đặt lại trình quản lý dịch vụ về trạng thái ban đầu.
Phương thức này sẽ đặt lại tất cả trạng thái của trình quản lý dịch vụ, bao gồm cả trạng thái giao tiếp, trạng thái bộ nhớ đệm và trạng thái của mọi yêu cầu kết nối đang chờ xử lý.
Xem thêm:đặt lại(WEAVE_ERROR)
huỷ giải quyết
void unresolve( WEAVE_ERROR aError )
Phương thức này sẽ làm mất hiệu lực bộ nhớ đệm của thư mục dịch vụ.
Phương thức này sẽ thiết lập trạng thái bộ nhớ đệm của thư mục dịch vụ để vào yêu cầu tiếp theo, trình quản lý dịch vụ sẽ gửi một truy vấn thư mục dịch vụ.
Phiên bản này của phương thức này (tại đây để đảm bảo khả năng tương thích ngược) sẽ nhận và ghi lại lỗi sau đó gọi unresolve(void) .
Chi tiết | |||
---|---|---|---|
Tham số |
|
không giải quyết(vô hiệu)
huỷ giải quyết
void unresolve( void )
Phương thức này sẽ làm mất hiệu lực bộ nhớ đệm của thư mục dịch vụ.
Phương thức này sẽ thiết lập trạng thái bộ nhớ đệm của thư mục dịch vụ để vào yêu cầu tiếp theo, trình quản lý dịch vụ sẽ gửi một truy vấn thư mục dịch vụ.
Xem thêm:huỷ giải quyết(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Phương thức này sẽ huỷ thực thể WeaveServiceManager.