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) typedef
void(*
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::Weave::Profiles::DataManagement_Current::CommandSender::InEventParam

Данные, возвращенные отправителю получателем специальной команды.

nl::Weave::Profiles::DataManagement_Current::CommandSender::OutEventParam

Данные, возвращенные объекту CommandSender из функции EventCallback.

nl::Weave::Profiles::DataManagement_Current::CommandSender::SendParams

Инкапсулирует аргументы, которые будут переданы в SendCommand().

nl::Weave::Profiles::DataManagement_Current::CommandSender::SynchronizedTraitState

Общедоступные типы

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
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)