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

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

요약

참고: 이 클래스는 명령어 전송의 프로토콜 세부정보를 캡슐화하여 애플리케이션과 관련된 메커니즘을 단순화합니다. 애플리케이션은 명령어의 페이로드가 포함된 PacketBuffer와 명령어 헤더의 내용과 명령어 동작을 변경하는 선택적 인수 집합을 제공합니다. 명령어 처리에서 이 래퍼의 유용성은 실질적으로 제한적입니다. 주된 이유는 보안 유효성 검사와 데이터 직렬화/역직렬화와 관련된 복잡성/유연성 때문입니다.

명령어 유효성 검사에 관한 세부정보는 아직 미정입니다.

이 클래스는 또한 애플리케이션이 연결된 TraitDataSink 내 데이터가 명령 응답에 제공된 버전을 기반으로 명령의 부작용을 따라잡았는지 추론하는 데 도움을 줍니다. 애플리케이션은 해당 객체의 저장소를 관리합니다.

위브 결합

이 클래스의 객체는 명령어를 전송하는 데 사용할 기본 결합 역할을 하는 Weave Binding으로 초기화할 수 있습니다. 사용자는 각 SendCommand() 호출에 Binding을 제공할 수도 있으며, 이렇게 하면 기본 Binding이 재정의됩니다. 기본 Binding을 제공할 필요는 없지만 CommandSender에 제공된 모든 바인딩은 이미 초기화되어야 합니다.

EventCallback

명령어를 전송한 후에 발생하는 이벤트에 대한 업데이트를 받으려면 이 유형의 함수를 정의해야 합니다 (아래의 'API 이벤트' 참고). 사용자가 명령어가 전송된 후 발생하는 상황에 관심이 없는 경우 NULL이 될 수 있습니다.

API 이벤트

다음은 Command를 전송한 후 발생할 수 있는 결과입니다.

CommunicationError

Command를 구성하거나 전송하는 중에 또는 응답을 기다리는 동안 오류가 발생했습니다. 응답을 기다리는 동안 발생할 수 있는 오류의 예로는 키 오류 또는 예기치 않은 연결 종료가 있습니다. 오류 이유는 EventCallback 핸들러의 InEventParam 인수에 포함됩니다.

InProgressReceived

수신자는 명령어가 수신되었지만 아직 완료되지 않았음을 나타내는 '진행 중' 메시지를 보낼 수 있습니다. 완료되면 수신자가 응답 또는 StatusReport를 보냅니다. '진행 중' 메시지는 전송하지 않아도 됩니다.

StatusReportReceived

StatusReport가 수신되면 Command를 처리하는 중에 오류가 발생했음을 의미합니다. 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

EventCallback 함수에서 CommandSender 객체로 다시 반환되는 데이터입니다.

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
)