nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Tóm tắt
Lưu ý: Lớp này đóng gói các chi tiết về giao thức của việc gửi lệnh, giúp đơn giản hoá cơ chế liên quan đến ứng dụng. Ứng dụng cung cấp một PacketBuffer chứa tải trọng của lệnh cũng như một tập hợp các đối số tuỳ chọn làm thay đổi nội dung của tiêu đề lệnh cũng như hành vi của lệnh. Thực sự, tiện ích của trình bao bọc này trong việc xử lý lệnh còn hạn chế, chủ yếu là do tính phức tạp/tính linh hoạt của việc xác thực bảo mật và chuyển đổi tuần tự/huỷ chuyển đổi tuần tự dữ liệu.
Thông tin chi tiết về việc xác thực lệnh vẫn chưa được xác định
Lớp này cũng giúp ứng dụng dự đoán xem dữ liệu trong TraitDataSink được liên kết có theo dõi hiệu ứng phụ của lệnh (dựa trên phiên bản được cung cấp trong phản hồi lệnh) hay không. Ứng dụng chịu trách nhiệm quản lý việc lưu trữ của đối tượng đó.
Liên kết dệt
Bạn có thể khởi tạo một đối tượng của lớp này bằng Liên kết Weave. Thao tác này sẽ đóng vai trò là Liên kết mặc định được dùng để gửi Lệnh. Người dùng cũng có thể cung cấp Binding (Liên kết) cho mỗi lệnh gọi của SendCommand(). Thao tác này sẽ ghi đè Binding (Liên kết) mặc định. Bạn không cần cung cấp Binding mặc định. Tuy nhiên, mọi liên kết được cung cấp cho CommandSender đều phải được khởi tạo.
EventCallback
Người dùng phải xác định một hàm thuộc loại này nếu họ muốn được cập nhật về các sự kiện xảy ra sau khi gửi lệnh (xem phần "Sự kiện API" bên dưới). Giá trị này có thể là giá trị NULL nếu người dùng không quan tâm đến điều gì sẽ xảy ra sau khi lệnh được gửi đi.
Sự kiện API
Sau đây là những sự kiện có thể xảy ra sau khi gửi Command:
CommunicationError
Đã xảy ra lỗi trong khi tạo hoặc gửi Command hoặc trong khi chờ phản hồi. Ví dụ về lỗi có thể xảy ra trong khi chờ phản hồi là các lỗi chính hoặc đóng kết nối ngoài dự kiến. Lý do xảy ra lỗi sẽ được đưa vào đối số InEventParam dành cho trình xử lý EventCallback.
InProgressReceived
Người nhận có thể gửi thư "đang tiếp diễn" cho biết rằng đã nhận được Lệnh nhưng chưa hoàn tất. Sau khi hoàn tất, người nhận sẽ gửi một Phản hồi hoặc StatusReport. Gửi 'đang tiến hành' là không bắt buộc.
StatusReportReceived
Việc nhận được StatusReport ngụ ý rằng đã xảy ra lỗi khi xử lý Command. Bạn có thể truy cập vào StatusReport thông qua InEventParam.
ResponseReceived
Khi nhận được Phản hồi thì tức là người nhận Command đã xử lý Command thành công. Phản hồi có thể chứa hoặc không chứa trọng tải. Nếu muốn giữ lại vùng đệm gói, ứng dụng có thể gọi ExchangeContext::AddRef() để tăng số lượng ref.
Loại công khai |
|
---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum |
Các thuộc tính công khai |
|
---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
Hàm tĩnh công khai |
|
---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
Hàm công khai |
|
---|---|
Close(bool aAbortNow)
|
void
|
Init(nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams)
|
|
SetSynchronizedTraitState(SynchronizedTraitState *aTraitState)
|
void
|
Cấu trúc |
|
---|---|
nl:: |
Dữ liệu được người nhận lệnh tuỳ chỉnh trả về cho người gửi. |
nl:: |
Dữ liệu được trả về đối tượng CommandSender qua hàm EventCallback. |
nl:: |
Đóng gói các đối số cần truyền vào SendCommand(). |
nl:: |
Loại công khai
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Các thuộc tính công khai
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Hàm tĩnh công khai
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Hàm công khai
Đóng
void Close( bool aAbortNow )
Init
WEAVE_ERROR Init( nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams )