nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Đối tượng trình quản lý cho 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 cho các ứng dụng thuộc dịch vụ thư mục. Do đó, trình phân tích cú pháp sẽ ẩn 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 một đ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ủ được tìm thấy ở đó, 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 về thư mục dịch vụ.
Hàm khởi tạo và hàm phá |
|
---|---|
WeaveServiceManager(void)
Phương thức này khởi chạy thực thể WeaveServiceManager.
|
|
~WeaveServiceManager(void)
Phương thức này sẽ huỷ bỏ 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 truy vấn thư mục dịch vụ đi. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Lệnh gọi lại ứng dụng để phân phối giá trị thời gian từ một phản hồi thư mục dịch vụ. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Một hàm truy cập cho thông tin về thư mục gốc. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Trình xử lý lỗi và điều kiện trạng thái. |
Hàm công khai |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Đặt một hàm callback đượ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 đó ở trạng thái kServiceMgrState_Resolved của thiết bị đầu cuối, có nghĩa là đã nhận được phản hồi từ điểm cuối của 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)
|
Các yêu cầu phương thức này 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 cho một điểm cuối của 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 cho một điểm cuối của dịch vụ.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Phương thức này xử lý sự kiện đóng kết nối do ngữ cảnh trao đổi Weave liên kết báo cáo.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Phương thức này xử lý sự kiện kết nối đã hoàn tất cho giao dịch truy vấn điểm cuối 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 bằng 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ờ, trong đó không nhận được phản hồi nào từ dịch vụ thư mục.
|
relocate(WEAVE_ERROR aError)
|
void
Phương thức này sẽ di chuyển bộ nhớ đệm của thư mục dịch vụ.
|
relocate(void)
|
void
Phương thức này sẽ di chuyển 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 vào đầu danh sách thư mục.
|
reset(WEAVE_ERROR aError)
|
void
Phương thức này đặ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 đặ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 vô hiệu hoá bộ nhớ đệm của thư mục dịch vụ.
|
unresolve(void)
|
void
Phương thức này vô hiệu hoá bộ nhớ đệm của thư mục dịch vụ.
|
Lớp |
|
---|---|
nl:: |
Lớp này đại diện cho một giao dịch do người 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 được nhận 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à tuỳ ý thay đổi 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ả kết nối với điểm cuối của dịch vụ đích, cũng như kết nối tới điểm cuối của 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 truy vấn thư mục dịch vụ đ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ụ. Tham số này được dùng để so khớp với OnServiceEndpointQueryEnd để bù cho thời gian hiển thị tin nhắn.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Lệnh gọi lại ứng dụng để phân phối giá trị thời gian từ một phản hồi thư mục dịch vụ.
Lệnh này được gọi khi chúng tôi nhận được thông tin 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 chỉ xảy ra nếu phản hồi được phân tích cú pháp thành công và bao gồm thông tin thời gian
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các tham số |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Một hàm truy cập cho thông tin về thư mục gốc.
Bạn phải bắt đầu từ một nơi nào đó và thư mục dịch vụ phải bắt đầu bằng một thư mục mã giả lập có chứa địa chỉ của máy chủ mà bạn có thể truy cập để truy cập vào mọi thư mục khác. Vì vị trí và nguồn gốc của thông tin này có thể thay đổi tuỳ theo thiết bị, nên chúng tôi sẽ cung cấp lệnh gọi lại trình truy cập tại đây.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các 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)
Trình xử lý lỗi và đ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ề sự cố khi cố thực thi yêu cầu kết nối theo một trong 2 cách. Thiết bị có thể nhận được báo cáo trạng thái từ dịch vụ hoặc có thể nhận được WEAVE_ERROR được tạo nội bộ. Trong cả hai trường hợp, thông tin sẽ được gửi qua lệnh gọi lại này.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
Hàm công khai
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Đặt một hàm callback được gọi ngay trước khi thiết lập kết nối.
Thông tin chi tiết | |||
---|---|---|---|
Các tham số |
|
WeaveServiceManager
WeaveServiceManager( void )
Phương thức này khởi chạy thực thể WeaveServiceManager.
Xin lưu ý rằng bạn phải gọi init() để tiếp tục khởi chạy thực thể này.
huỷ
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ã điểm cuối dịch vụ và đối tượng trạng thái ứng dụng được truyền vào thời điểm yêu cầu dưới dạng giá trị nhận dạng. Nếu đây 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ý.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các 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 đó ở trạng thái kServiceMgrState_Resolved của thiết bị đầu cuối, có nghĩa là đã nhận được phản hồi từ điểm cuối của Thư mục dịch vụ.
connect
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
Các yêu cầu phương thức này 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, phương thức này tạo ra kết nối an toàn với dịch vụ Weave dựa trên điểm cuối của dịch vụ và chế độ xác thực hoặc không hoạt động.
Phương thức này chỉ có thể được gọi sau khi gọi init() thành công và bạn có thể huỷ yêu cầu kết nối bằng cancel().
Phương thức này có thể được gọi trước khi bộ nhớ đệm cục bộ chứa đầy dữ liệu từ dữ liệu được cấp phép mặc định hoặc từ chuyến đi đến dịch vụ thư mục. Trình quản lý dịch vụ sẽ chỉ xếp yêu cầu vào hàng đợi trước khi có thể xác định nội dung bộ nhớ đệm.
Thông tin chi tiết | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||||||||
Trả về |
WEAVE_NO_ERROR khi thành công; nếu không, hãy nhập một mã lỗi tương ứng.
|
init
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ụ.
Để được sử dụng, bạn phải khởi động 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 phương thức connect(), lookup() và các phương thức khác.
Thông tin chi tiết | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||||||||||
Trả về |
WEAVE_ERROR_INVALID_ARGUMENT nếu đối số hàm không hợp lệ; nếu không thì 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 cho một điểm cuối của dịch vụ.
Nếu thư mục dịch vụ đã được phân giải, tức là có thao tác connect() thành công, thì phương thức này sẽ điền sẵn đối tượng HostPortList đã cung cấp.
Lưu ý: HostPortList được liên kết với đối tượng WeaveServiceManager. Mã này vẫn có hiệu lực cho đến khi bộ nhớ đệm của thư mục dịch vụ bị xoá hoặc cho đến khi một lượt tra cứu thư mục dịch vụ khác.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các 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 cho một điểm cuối của dịch vụ.
Nếu thư mục dịch vụ đã được phân giải, tức là có 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 hiển thị thông tin chi tiết về quy trình triển khai nội bộ của thư mục dịch vụ. Bạn nên ưu tiên quá trình triển khai bằng cách sử dụng biến thể của phương thức để tạo HostPortList.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các 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 do ngữ cảnh trao đổi Weave liên kết báo cáo.
Thông tin chi tiết | |||
---|---|---|---|
Các 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 cho giao dịch truy vấn điểm cuối dịch vụ.
Có một vài khả năng. Thứ nhất, kết nối có thể đã không thành công. Trong trường hợp đó, chúng ta đã kết nối xong. Nếu không, kết nối sẽ thực sự hoàn tất và điều chúng ta cần làm là mở ngữ cảnh trao đổi và gửi truy vấn thư mục.
Thông tin chi tiết | |||
---|---|---|---|
Các 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 bằng dịch vụ thư mục.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
onResponseTimeout
void onResponseTimeout( void )
Phương thức này xử lý sự kiện hết thời gian chờ, trong đó không nhận được phản hồi nào từ dịch vụ thư mục.
chuyển vị trí
void relocate( WEAVE_ERROR aError )
Phương thức này sẽ di chuyển bộ nhớ đệm của thư mục dịch vụ.
Khi đ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 tiên và reset() nếu sự cố chưa được giải quyết.
Phiên bản này của phương thức – tại đây nhằm tương thích ngược – sẽ lấy và ghi lỗi vào nhật ký sau đó gọi relocate(void) .
Thông tin chi tiết | |||
---|---|---|---|
Các tham số |
|
relocate(void)
chuyển vị trí
void relocate( void )
Phương thức này sẽ di chuyển bộ nhớ đệm của thư mục dịch vụ.
Khi đ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 tiên và reset() nếu sự cố chưa được giải quyết.
Xem thêm:di chuyển(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 vào đầu danh sách thư mục.
Khôi phục tùy chọn tìm kiếm
void reset( WEAVE_ERROR aError )
Phương thức này đặ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 phương thức này – tại đây để tương thích ngược – sẽ ghi nhận và ghi lại lỗi sau đó gọi reset(void) .
Thông tin chi tiết | |||
---|---|---|---|
Các tham số |
|
reset(void)
Khôi phục tùy chọn tìm kiếm
void reset( void )
Phương thức này đặ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:reset(WEAVE_ERROR)
huỷ giải quyết
void unresolve( WEAVE_ERROR aError )
Phương thức này vô hiệu hoá bộ nhớ đệm của thư mục dịch vụ.
Phương thức này sẽ đặt trạng thái bộ nhớ đệm của thư mục dịch vụ để trong yêu cầu tiếp theo, trình quản lý dịch vụ sẽ đưa ra truy vấn thư mục dịch vụ.
Phiên bản phương thức này – tại đây để tương thích ngược – nhận và ghi lại lỗi sau đó gọi unresolve(void) .
Thông tin chi tiết | |||
---|---|---|---|
Các tham số |
|
unresolve(void)
huỷ giải quyết
void unresolve( void )
Phương thức này vô hiệu hoá bộ nhớ đệm của thư mục dịch vụ.
Phương thức này sẽ đặt trạng thái bộ nhớ đệm của thư mục dịch vụ để trong yêu cầu tiếp theo, trình quản lý dịch vụ sẽ đưa ra truy vấn thư mục dịch vụ.
Xem thêm:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Phương thức này sẽ huỷ bỏ thực thể WeaveServiceManager.