nl:: Weave:: Profiles:: Echo_Next:: WeaveEchoClient
#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>
Provides the ability to send Weave EchoRequest messages to a peer node and receive the corresponding EchoResponse messages.
요약
WeaveEchoClient 클래스는 Weave Echo 프로토콜의 시작자 측을 구현합니다. ICMP 핑 프로토콜과 마찬가지로 Weave Echo 프로토콜을 사용하여 Weave 노드의 활성 및 연결 가능성을 테스트할 수 있습니다.
애플리케이션은 WeaveEchoClient 클래스를 사용하여 Binding 객체로 식별된 피어 노드에 일회성 또는 반복 EchoRequest 메시지를 보낼 수 있습니다. 에코 요청에 응답하기 위한 상응하는 클래스가 존재합니다 (WeaveEchoServer 참조).
클라이언트 바인딩
WeaveEchoClient는 에코 요청의 의도된 수신자를 식별하고 통신하는 데 사용되는 Weave Binding 객체를 받습니다. Binding은 WeaveEchoClient 객체를 초기화하기 전에 애플리케이션에서 구성하고 준비하거나 준비되지 않은 상태로 둘 수 있습니다. 이 경우 WeaveEchoClient는 필요에 따라 바인딩 준비를 요청합니다 (자세한 내용은 Binding::RequestPrepare() 참조).
준비 상태로 전환된 후 실패하는 경우 바인딩의 주문형 준비도 요청됩니다.
반복 모드
SendRepeating() 메서드를 사용하여 WeaveEchoClient를 SendRepeating 모드로 전환할 수 있습니다. 이 모드에서 클라이언트 객체는 구성된 간격으로 반복된 일련의 EchoRequest 메시지를 피어에 전송합니다. SendRepeating 모드는 Stop() 메서드를 호출하여 취소할 수 있습니다.
멀티캐스트 및 브로드캐스트
WeaveEchoClient 객체는 적절한 IPv6 멀티캐스트 주소 또는 IPv4 로컬 네트워크 브로드캐스트 주소 (255.255.255.255)로 Binding 객체를 구성하여 EchoRequest를 여러 수신자에게 동시에 보내는 데 사용할 수 있습니다. WeaveEchoClient 객체는 멀티캐스트 또는 브로드캐스트 피어 주소를 감지하는 경우 EchoRequest의 전송 시 자동으로 MultiResponse 모드로 전환됩니다.
이 모드에서 객체는 동일한 교환에 도착하는 모든 수신 EchoResponse 메시지를 계속 수신 대기하고 전달합니다. 객체는 1) 애플리케이션이 Stop() 또는 Send()를 호출하거나, 2) SendRepeating 모드에서, 다른 요청을 전송할 시간이 되거나, 3) 응답이 수신되지 않고 수신 제한 시간이 만료될 때까지 다중 응답 모드로 유지됩니다.
API 이벤트
작업 중에 WeaveEchoClient 객체는 애플리케이션을 호출하여 특정 작업을 요청하거나 중요한 이벤트의 알림을 전달합니다. 이러한 API 이벤트 호출은 클라이언트 객체에 현재 구성된 콜백 함수에 대해 이루어집니다. 달리 명시되지 않는 한 애플리케이션은 이벤트 콜백 중에 클라이언트의 상태를 변경할 수 있습니다. 한 가지 전반적인 예외는 객체의 Shutdown() 메서드이며 콜백 도중에 호출되지 않을 수 있습니다.
다음과 같은 API 이벤트가 정의됩니다.
PreparePayload
WeaveEchoClient가 EchoRequest 메시지를 작성하려고 하고 페이로드를 제공하도록 애플리케이션에 요청합니다. 애플리케이션이 원하는 경우 페이로드 데이터를 포함하는 새로운 PacketBuffer를 반환할 수 있습니다. 애플리케이션이 이 이벤트를 처리하지 않는 경우, 길이가 0인 페이로드가 포함된 EchoRequest가 자동으로 전송됩니다. 애플리케이션은 이 콜백 중에 WeaveEchoClient의 상태를 변경하면 안 됩니다(MAY NOT).
RequestSent
EchoRequest 메시지가 피어에 전송되었습니다.
ResponseReceived
피어로부터 EchoResponse 메시지가 수신되었습니다. 이벤트에 대한 인수에는 응답 메시지에 대한 응답 페이로드와 메타 정보가 포함됩니다.
CommunicationError
EchoRequest를 작성하거나 전송하는 동안 또는 응답을 기다리는 동안 오류가 발생했습니다. 응답을 기다리는 동안 발생할 수 있는 오류의 예로는 키 오류 또는 예상치 못한 연결 종료 등이 있습니다. 이벤트 인수에는 오류 이유가 포함됩니다.
ResponseTimeout
할당된 시간 내에 EchoResponse가 수신되지 않았습니다. 응답 제한 시간은 Binding 객체의 DefaultResponseTimeout 속성으로 제어됩니다.
RequestAborted
이전 메시지에 대한 응답을 수신하기 전에 다른 EchoRequest를 전송하라는 요청이 발생했으므로 진행 중인 에코 교환이 취소되었습니다. SendRepeating 모드에서 다음 EchoRequest를 전송할 시간이 되면 발생할 수 있습니다. EchoRequest가 전송된 후 응답이 수신되기 전에 애플리케이션이 Send()를 호출하는 경우에도 이러한 상황이 발생할 수 있습니다.
객체가 MultiResponse 모드인 경우 EchoResponse 메시지가 하나 이상 수신되면 이벤트가 차단됩니다.
생성자 및 소멸자 |
|
---|---|
WeaveEchoClient(void)
|
공개 유형 |
|
---|---|
EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
|
typedefvoid(*
|
EventType{
|
enum |
State{
|
enum |
공개 속성 |
|
---|---|
AppState
|
void *
애플리케이션별 데이터에 대한 포인터입니다.
|
공개 함수 |
|
---|---|
GetBinding(void) const
|
Binding *
WeaveEchoClient와 연결된 Binding 객체에 대한 포인터를 반환합니다.
|
GetEventCallback(void) const
|
EventCallback
현재 WeaveEchoClient 객체에 구성된 API 이벤트 콜백 함수에 대한 포인터를 반환합니다.
|
GetState(void) const
|
WeaveEchoClient 객체의 현재 상태를 검색합니다.
|
Init(Binding *binding, EventCallback eventCallback, void *appState)
|
WeaveEchoClient 객체를 초기화합니다.
|
IsSendRrepeating() const
|
bool
WeaveEchoClient 객체가 현재 전송 반복 모드에 있으면 true를 반환합니다.
|
RequestInProgress() const
|
bool
EchoRequest가 전송되었고 WeaveEchoClient 객체가 응답을 기다리고 있는 경우 true를 반환합니다.
|
Send(void)
|
피어에 EchoRequest 메시지를 보냅니다.
|
Send(PacketBuffer *payloadBuf)
|
특정 페이로드와 함께 EchoRequest 메시지를 피어에 보냅니다.
|
SendRepeating(uint32_t sendIntervalMS)
|
EchoRequest 메시지의 반복 시퀀스를 피어에 전송하기 시작합니다.
|
SetEventCallback(EventCallback eventCallback)
|
void
WeaveEchoClient 객체에 API 이벤트 콜백 함수를 설정합니다.
|
Shutdown(void)
|
void
이전에 초기화된 WeaveEchoClient 객체를 종료합니다.
|
Stop(void)
|
void
진행 중인 모든 에코 교환을 중지하고 보내기 반복 모드를 취소합니다.
|
공개 정적 함수 |
|
---|---|
DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
|
void
WeaveEchoClient API 이벤트의 기본 핸들러입니다.
|
구조체 |
|
---|---|
nl:: |
WeaveEchoClient API 이벤트에 매개변수를 입력합니다. |
nl:: |
WeaveEchoClient API 이벤트에 매개변수를 출력합니다. |
공개 유형
EventCallback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
EventType
EventType
속성 | |
---|---|
kEvent_CommunicationError
|
EchoRequest를 전송하거나 응답을 기다리는 중에 통신 오류가 발생했습니다. |
kEvent_DefaultCheck
|
애플리케이션에서 올바른 기본 이벤트 처리를 확인하는 데 사용됩니다. |
kEvent_PreparePayload
|
에코 요청을 위한 페이로드를 준비하도록 애플리케이션에 요청합니다. |
kEvent_RequestAborted
|
다른 교환 시작 요청이 발생하여 진행 중인 에코 교환이 취소되었습니다. |
kEvent_RequestSent
|
EchoRequest 메시지가 피어에 전송되었습니다. |
kEvent_ResponseReceived
|
피어로부터 EchoResponse 메시지가 수신되었습니다. |
kEvent_ResponseTimeout
|
할당된 시간 내에 EchoResponse가 수신되지 않았습니다. |
주
State
속성 | |
---|---|
kState_Idle
|
클라이언트 객체가 유휴 상태입니다. |
kState_NotInitialized
|
클라이언트 객체가 초기화되지 않았습니다. |
kState_PreparingBinding
|
클라이언트 객체가 결합이 준비되기를 기다리는 중입니다. |
kState_RequestInProgress
|
EchoRequest 메시지가 전송되었으며 클라이언트 객체가 응답을 기다리고 있습니다. |
kState_WaitingToSend
|
SendRepeating()이 호출되었고 클라이언트 객체가 다음 번에 EchoRequest를 전송할 때까지 대기합니다. |
공개 속성
AppState
void * AppState
애플리케이션별 데이터에 대한 포인터입니다.
공개 함수
GetEventCallback
EventCallback GetEventCallback( void ) const
현재 WeaveEchoClient 객체에 구성된 API 이벤트 콜백 함수에 대한 포인터를 반환합니다.
Init
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
WeaveEchoClient 객체를 초기화합니다.
피어에 에코 메시지를 보내기 전에 WeaveEchoClient 객체를 초기화합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
RequestInProgress
bool RequestInProgress() const
EchoRequest가 전송되었고 WeaveEchoClient 객체가 응답을 기다리고 있는 경우 true를 반환합니다.
보내기
WEAVE_ERROR Send( void )
피어에 EchoRequest 메시지를 보냅니다.
이 메서드는 EchoRequest 메시지를 피어 노드에 전송하는 프로세스를 시작합니다. 해당하는 EchoResponse 메시지가 수신되면 ResponseReceived API 이벤트를 통해 애플리케이션에 전달됩니다.
EchoRequest 메시지를 작성할 때 WeaveEchoClient는 PreparePayload API 이벤트를 통해 애플리케이션에 메시지의 페이로드를 준비하도록 요청합니다.
이 메서드가 호출될 때 Binding 객체가 준비 상태가 아니면 Binding::RequestPrepare() 메서드에 요청이 전송되어 주문형 준비가 시작됩니다. 그러면 이 프로세스가 완료될 때까지 보내기 작업이 큐에 추가됩니다. 이 큐의 최대 깊이는 1입니다. 따라서 대기열에 이전 송신이 있는 동안 Send()를 호출하면 단일 EchoRequest만 전송됩니다.
WeaveEchoClient가 전송 반복 모드에 있는 동안(즉, SendRepeating()에 대한 이전 호출로 인해) Send()를 호출하면 전송 주기를 가속화하고 재설정하지만 WeaveEchoClient가 전송 반복 모드에서 해제되지는 않습니다.
보내기
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
특정 페이로드와 함께 EchoRequest 메시지를 피어에 보냅니다.
이 메서드는 EchoRequest 메시지를 피어 노드에 전송하는 프로세스를 시작합니다. 제공된 페이로드 버퍼의 내용은 EchoRequest 메시지의 페이로드로 피어에 전송됩니다. 해당하는 EchoResponse 메시지가 수신되면 ResponseReceived API 이벤트를 통해 애플리케이션에 전달됩니다.
이 메서드를 호출하면 제공된 페이로드 버퍼의 소유권이 WeaveEchoClient 객체에 전달되며, 이 객체는 이를 해제할 책임이 있습니다. 이는 메서드가 성공적으로 완료되었든 오류와 함께 완료되었든 상관없이 true입니다.
이 메서드가 호출될 때 Binding 객체가 준비 상태가 아니면 Binding::RequestPrepare() 메서드에 요청이 전송되어 주문형 준비가 시작됩니다. 그러면 이 프로세스가 완료될 때까지 보내기 작업이 큐에 추가됩니다. 이 큐의 최대 깊이는 1입니다. 따라서 대기열에 이전 송신이 있는 동안 Send()를 호출하면 단일 EchoRequest만 전송됩니다.
WeaveEchoClient가 전송 반복 모드에 있는 동안(즉, SendRepeating()에 대한 이전 호출로 인해) Send()를 호출하면 전송 주기를 가속화하고 재설정하지만 WeaveEchoClient가 전송 반복 모드에서 해제되지는 않습니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
EchoRequest 메시지의 반복 시퀀스를 피어에 전송하기 시작합니다.
이 메서드는 EchoRequest 메시지를 피어에 전송하는 반복 프로세스를 시작합니다. EchoResponse 메시지는 피어로부터 수신되면 ResponseReceived API 이벤트를 통해 애플리케이션에 전달됩니다.
SendRepeating()이 호출되면 WeaveEchoClient는 전송 반복 모드로 전환되어 Stop()이 호출되거나 Binding 오류가 발생할 때까지 머무릅니다. SendRepeating()을 여러 번 호출하면 전송 주기를 재설정하고 간격을 업데이트하는 효과가 있습니다.
시퀀스의 초기 전송은 SendRepeating()이 호출될 때 또는 SendRepeating()이 호출된 후 Binding이 준비될 때마다 발생합니다 (아래 참조). 이후에는 지정된 간격으로 후속 전송이 발생합니다.
전송이 발생할 때마다 WeaveEchoClient는 PreparePayload API 이벤트를 통해 애플리케이션에 요청하여 메시지의 페이로드를 준비합니다.
메시지를 보낼 때 Binding 객체가 준비 상태가 아니면 Binding::RequestPrepare() 메서드에 요청이 전송되어 요청 시 준비가 시작됩니다. 이 프로세스가 완료될 때까지 반복되는 메시지 전송은 일시중지됩니다. 주문형 Binding 준비 중에 실패하면 WeaveEchoClient가 전송 반복 모드를 종료합니다.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
WeaveEchoClient 객체에 API 이벤트 콜백 함수를 설정합니다.
종료
void Shutdown( void )
이전에 초기화된 WeaveEchoClient 객체를 종료합니다.
이 메서드는 이전에 Init() 메서드가 호출된 경우에만 호출할 수 있습니다.
중지
void Stop( void )
진행 중인 모든 에코 교환을 중지하고 보내기 반복 모드를 취소합니다.
WeaveEchoClient
WeaveEchoClient( void )
공개 정적 함수
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
WeaveEchoClient API 이벤트의 기본 핸들러입니다.
애플리케이션에서 인식하거나 처리할 수 없는 API 이벤트에 대해 이 메서드를 호출해야 합니다. 제공된 매개변수는 클라이언트 객체가 애플리케이션의 이벤트 핸들러 함수에 전달한 매개변수와 같아야 합니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|