nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
Сводка
Примечание. Этот класс инкапсулирует детали протокола отправки команд, упрощая механику, задействованную в приложениях. Приложение предоставляет PacketBuffer, содержащий полезную нагрузку команды, а также необязательный набор аргументов, которые изменяют содержимое заголовка команды, а также поведение команды. Полезность этой оболочки для обработки команд действительно ограничена, в основном из-за сложности/гибкости, связанной с проверкой безопасности и сериализацией/десериализацией данных.
Сведения о проверке команд пока не определены.
Этот класс также помогает приложениям определить, догнали ли данные в связанном TraitDataSink побочные эффекты команды (на основе версии, указанной в ответе на команду). Приложение отвечает за управление хранилищем этого объекта.
Объект этого класса можно инициализировать с помощью привязки Weave, которая будет использоваться по умолчанию для отправки команд. Пользователь также может указать привязку для каждого вызова SendCommand(), которая переопределит привязку по умолчанию. Указывать привязку по умолчанию не обязательно, но любая привязка, предоставленная CommandSender, должна быть инициализирована.
EventCallback
Пользователь должен определить функцию этого типа, если он хочет получать информацию о событиях, которые происходят после отправки команды (см. раздел "События API" ниже). Если пользователю не важно, что произойдет после отправки команды, можно указать значение NULL.
События API
После отправки команды возможны следующие события:
CommunicationError
При формировании или отправке команды или во время ожидания ответа произошла ошибка. Примеры ошибок, которые могут возникнуть во время ожидания ответа: ошибки ключа или неожиданное закрытие соединения. Причина ошибки будет указана в аргументе InEventParam обработчика EventCallback.
InProgressReceived
Получатель может отправить сообщение о том, что команда получена, но ещё не выполнена. После этого получатель отправит Response или StatusReport. Отправлять сообщение о том, что запрос обрабатывается, не требуется.
StatusReportReceived
Получение StatusReport означает, что при обработке команды произошла ошибка. Доступ к StatusReport можно получить через InEventParam.
ResponseReceived
Получение ответа означает, что получатель команды успешно обработал команду. Ответ может содержать полезную нагрузку. Если приложение хочет сохранить буфер пакетов, оно может вызвать ExchangeContext::AddRef(), чтобы увеличить количество ссылок.
Общедоступные типы |
|
|---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum : перечисление |
Общедоступные атрибуты |
|
|---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
|
Общедоступные статические функции |
|
|---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
Общественные функции |
|
|---|---|
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
|
Структуры |
|
|---|---|
|
nl:: |
Данные, возвращенные отправителю получателем специальной команды. |
|
nl:: |
Данные, возвращенные объекту CommandSender из функции EventCallback. |
|
nl:: |
Инкапсулирует аргументы, которые будут переданы в SendCommand(). |
|
nl:: |
|
Общедоступные типы
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
Общедоступные атрибуты
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
Общедоступные статические функции
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Общественные функции
Закрыть
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 )