нл:: Переплетение:: Профили:: DataManagement_Current:: КомандаОтправитель

#include <src/lib/profiles/data-management/Current/CommandSender.h>

Краткое содержание

Примечание. Этот класс инкапсулирует детали протокола отправки команд, упрощая механику приложений. Приложение предоставляет PacketBuffer, содержащий полезные данные команды, а также дополнительный набор аргументов, которые изменяют содержимое заголовка команды, а также поведение команды. Полезность этой оболочки для обработки команд действительно ограничена, главным образом из-за сложности/гибкости проверки безопасности и сериализации/десериализации данных.

Детали проверки команд еще не определены.

Этот класс также помогает приложениям определить, подверглись ли данные в связанном TraitDataSink побочным эффектам команды (на основе версии, указанной в ответе команды). Приложение отвечает за управление хранилищем этого объекта.

Переплетение

Объект этого класса можно инициализировать с помощью Weave Binding , который будет служить привязкой по умолчанию для отправки команд. Пользователь также может предоставить привязку для каждого вызова SendCommand(), которая переопределит привязку по умолчанию. Нет необходимости предоставлять Binding по умолчанию, однако любая привязка, предоставляемая CommandSender , уже должна быть инициализирована.

Обратный вызов события

Пользователь должен определить функцию этого типа, если он хочет быть в курсе событий, которые происходят после отправки команды (см. «События API» ниже). Это может быть NULL, если пользователя не волнует, что произойдет после отправки команды.

API-события

Следующие события являются возможными результатами после отправки команды :

Ошибка связи

Произошла ошибка при формировании или отправке Команды , либо во время ожидания ответа. Примерами ошибок, которые могут возникнуть во время ожидания ответа, являются ключевые ошибки или неожиданное закрытие соединения. Причина ошибки будет содержаться в аргументе InEventParam обработчика EventCallback.

ВыполняетсяПолучено

Получатель может отправить сообщение «в процессе», которое означает, что команда получена, но еще не завершена. После завершения получатель отправит Response или StatusReport. Отправка сообщения «в процессе» не требуется.

СтатусОтчетполучен

Получение StatusReport означает, что при обработке команды произошла ошибка. Доступ к StatusReport можно получить через InEventParam .

Ответ получен

Получение ответа означает, что получатель команды успешно обработал команду . Ответ может содержать полезную нагрузку, а может и не содержать. Если приложению необходимо сохранить буфер пакетов, оно может вызвать ExchangeContext::AddRef() для увеличения счетчика ссылок.

Публичные типы

EventCallback )(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam) определение типа
void(*
EventType перечисление

Публичные атрибуты

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

Публичные типы

Обратный вызов события

void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)

Тип события

 EventType

Публичные атрибуты

маппстате

void * mAppState = NULL

мсинкронизедтраитстате

SynchronizedTraitState * mSyncronizedTraitState = NULL

Публичные статические функции

Обработчик событий по умолчанию

void DefaultEventHandler(
  void *aAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

Общественные функции

Закрывать

void Close(
  bool aAbortNow
)

В этом

WEAVE_ERROR Init(
  nl::Weave::Binding *aBinding,
  const EventCallback aEventCallback,
  void *const aAppState
)

ОтправитьКоманду

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  ResourceIdentifier & aResourceId,
  uint32_t aProfileId,
  uint32_t aCommandType
)

ОтправитьКоманду

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  SendParams & aSendParams
)

SetSynchronizedTraitState

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)