nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
요약
참고: 이 클래스는 명령어 전송의 프로토콜 세부정보를 캡슐화하여 애플리케이션과 관련된 메커니즘을 단순화합니다. 애플리케이션은 명령어의 페이로드가 포함된 PacketBuffer뿐 아니라 명령어 헤더의 내용과 명령어 동작을 변경하는 선택적 인수 집합을 제공합니다. 명령어 처리와 관련한 이 래퍼의 유용성은 실질적으로 제한적입니다. 주된 이유는 보안 검증 및 데이터 직렬화/역직렬화와 관련된 복잡성/유연성 때문입니다.
명령어 유효성 검사에 대한 세부정보는 아직 미정입니다.
또한 이 클래스는 애플리케이션이 연결된 TraitDataSink 내의 데이터가 명령어의 부작용을 포착했는지 여부를 추론하는 데 도움을 줍니다 (명령어 응답에 제공된 버전에 따라). 애플리케이션은 해당 객체의 저장소를 관리합니다.
Weave 결합
이 클래스의 객체는 명령을 전송하는 데 사용할 기본 바인딩 역할을 하는 Weave Binding으로 초기화할 수 있습니다. 사용자는 SendCommand()의 각 호출에 Binding을 제공하여 기본 Binding을 재정의할 수도 있습니다. 기본 Binding을 제공할 필요는 없지만 CommandSender에 제공된 바인딩은 이미 초기화되어 있어야 합니다.
EventCallback
사용자가 명령어를 보낸 후에 발생하는 이벤트에 대한 업데이트를 받으려면 이 유형의 함수를 정의해야 합니다 (아래의 'API 이벤트' 참조). 사용자가 명령어 전송 후 발생하는 상황에 신경을 쓰지 않는 경우 NULL이 될 수 있습니다.
API 이벤트
다음 이벤트는 Command를 전송한 후 발생할 수 있는 결과입니다.
CommunicationError
Command를 작성하거나 전송하는 중 또는 응답을 기다리는 중에 오류가 발생했습니다. 응답을 기다리는 동안 발생할 수 있는 오류의 예로는 키 오류 또는 예상치 못한 연결 종료 등이 있습니다. 오류 이유는 EventCallback 핸들러의 InEventParam 인수에 포함됩니다.
InProgressReceived
수신자가 '처리 중' 메시지를 보낼 수 있습니다. Command가 수신되었지만 아직 완료되지 않았음을 나타내는 메시지가 표시됩니다. 완료되면 수신자가 Response 또는 StatusReport를 전송합니다. '진행 중' 메시지 전송 메시지가 필요하지 않습니다.
StatusReportReceived
StatusReport가 수신되면 Command를 처리하는 동안 오류가 발생했음을 의미합니다. StatusReport는 InEventParam을 통해 액세스할 수 있습니다.
ResponseReceived
응답 수신은 Command 수신자가 Command를 성공적으로 처리했음을 의미합니다. 응답에는 페이로드가 포함될 수도 있고 포함되지 않을 수도 있습니다. 애플리케이션이 패킷 버퍼를 유지하려는 경우 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:: |
EventCallback 함수에서 CommandSender 객체로 다시 반환된 데이터 |
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 )