Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

nl::Weave::프로필::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 프로토콜의 시작자를 구현합니다. Weave Echo 프로토콜은 ICMP 핑 프로토콜과 마찬가지로 Weave 노드의 활성성과 연결성을 테스트하는 데 사용할 수 있습니다.

애플리케이션은 WeaveEchoClient 클래스를 사용하여 일회성 또는 반복 EchoRequest 메시지를 결합 객체로 식별되는 피어 노드에 보낼 수 있습니다. 에코 요청에 응답하기 위한 해당 클래스가 있습니다 (WeaveEchoServer 참고).

클라이언트 결합

WeaveEchoClient는 에코 요청을 의도된 수신자와 식별하고 설정하는 데 사용되는 Weave Binding 객체를 사용합니다. BindingaWeaveEchoClient 객체를 초기화하기 전에 애플리케이션에서 구성 및 준비할 수 있습니다. 또는 준비되지 않은 상태로 둘 수도 있습니다. 이 경우 WeaveEchoClient는 주문형 바인딩 준비를 요청합니다 (자세한 내용은 Binding::RequestPrepare() 참고).

또한 준비 상태가 되면 Binding이 요청 시 준비되도록 합니다.

SendRepeating 모드

SendRepeating() 메서드는 WeaveEchoClient를 SendRepeating 모드로 전환하는 데 사용할 수 있습니다. 이 모드에서 클라이언트 객체는 구성된 간격으로 EchoRequest 메시지의 반복 시퀀스를 피어에 보냅니다. SendRepeating 모드는 Stop() 메서드를 호출하여 취소할 수 있습니다.

멀티캐스트 및 방송

WeaveEchoClient 객체를 사용하면 적절한 IPv6 멀티캐스트 주소 또는 IPv4 로컬 네트워크 브로드캐스트 주소 (255.255.255.255)를 사용하여 Binding 객체를 구성하여 여러 수신자에게 EchoRequest를 동시에 보낼 수 있습니다. WeaveEchoClient 객체는 멀티캐스트 또는 브로드캐스트 피어 주소를 감지하면 EchoRequest를 전송할 때 자동으로 멀티응답 모드로 전환됩니다.

이 모드에서는 객체가 동일한 교환에서 수신되는 모든 EchoResponse 메시지를 계속 수신하고 전달합니다. 객체는 1) 애플리케이션이 Stop() 또는 Send()를 호출하거나 2) SendRepeating 모드에서 다른 요청을 보내는 데 시간이 오거나 3) 응답이 없고 수신 시간 제한이 만료될 때까지 다중 응답 모드로 유지됩니다.

API 이벤트

작업 중 WeaveEchoClient 객체는 특정 작업을 요청하거나 중요한 이벤트의 알림을 전달하도록 애플리케이션을 호출합니다. 이러한 API 이벤트 호출은 클라이언트 객체에서 현재 구성된 콜백 함수에 대해 호출됩니다. 별도로 명시되지 않는 한, 애플리케이션은 이벤트 콜백 도중에 클라이언트의 상태를 자유롭게 변경할 수 있습니다. 한 가지 일반적인 예외는 객체의 Shutdown() 메서드입니다. 이 메서드는 콜백 중에 호출될 수 없습니다.

다음과 같은 API 이벤트가 정의됩니다.

준비 페이로드

WeaveEchoClient는 EchoRequest 메시지를 구성하려고 하는데 애플리케이션에 페이로드를 제공하도록 요청합니다. 원하는 경우 애플리케이션이 페이로드 데이터가 포함된 새 PacketBuffer를 반환할 수 있습니다. 애플리케이션에서 이 이벤트를 처리하지 않으면 길이가 0인 페이로드가 포함된 EchoRequest가 자동으로 전송됩니다. 이 콜백은 애플리케이션에서 WeaveEchoClient의 상태를 변경하면 안 됩니다(MAY NOT).

RequestSent

EchoRequest 메시지가 피어에 전송되었습니다.

응답 수신됨

피어로부터 EchoResponse 메시지가 수신되었습니다. 이벤트의 인수에는 응답 페이로드와 응답 메시지에 대한 메타 정보가 포함됩니다.

통신 오류

EchoRequest를 작성하거나 보내는 중 또는 응답을 기다리는 중에 오류가 발생했습니다. 응답을 기다리는 동안 발생할 수 있는 오류의 예로는 키 오류 또는 예상치 못한 연결 종료가 있습니다. 이벤트 인수에는 오류 이유가 포함됩니다.

응답 시간 초과

주어진 기간 동안 EchoResponse가 수신되지 않았습니다. 응답 시간 제한은 결합 객체의 DefaultResponseTimeout 속성에서 제어합니다.

요청 취소됨

이전 메시지에 대한 응답을 받기 전에 다른 EchoRequest를 전송해 달라는 요청이 진행 중이므로 진행 중인 에코 교환이 취소되었습니다. 이는 다음 EchoRequest를 보낼 시간이 도착하면 SendRepeating 모드에서 발생할 수 있습니다. 이는 EchoRequest가 전송된 후 응답이 수신되기 전에 애플리케이션에서 Send()를 호출하는 경우에도 발생할 수 있습니다.

객체가 다중 응답 모드일 때는 하나 이상의 EchoResponse 메시지가 수신되면 이벤트가 표시되지 않습니다.

생성자 및 소멸자

WeaveEchoClient(void)

공개 유형

EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) typedef
void(*
EventType{
  kEvent_PreparePayload = 1,
  kEvent_RequestSent = 2,
  kEvent_ResponseReceived = 3,
  kEvent_CommunicationError = 4,
  kEvent_ResponseTimeout = 5,
  kEvent_RequestAborted = 6,
  kEvent_DefaultCheck = 100
}
enum
State{
  kState_NotInitialized = 0,
  kState_Idle = 1,
  kState_PreparingBinding = 2,
  kState_RequestInProgress = 3,
  kState_WaitingToSend = 4
}
enum

공개 속성

AppState
void *
애플리케이션별 데이터에 대한 포인터입니다.

공개 함수

GetBinding(void) const
WeaveEchoClient와 연결된 결합 객체에 대한 포인터를 반환합니다.
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::Weave::프로필::Echo_Next::WeaveEchoClient::InEventParam

WeaveEchoClient API 이벤트에 매개변수를 입력합니다.

nl::Weave::프로필::Echo_Next::WeaveEchoClient::OutEventParam

WeaveEchoClient API 이벤트의 매개변수를 출력합니다.

공개 유형

이벤트 콜백

void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)

EventType

 EventType
속성
kEvent_CommunicationError

EchoRequest를 전송하거나 응답을 기다리는 중에 통신 오류가 발생했습니다.

kEvent_DefaultCheck

애플리케이션에서 올바른 기본 이벤트 처리를 확인하는 데 사용됩니다.

kEvent_PreparePayload

애플리케이션이 Echo 요청에 대한 페이로드를 준비하도록 요청됩니다.

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를 보낼 때까지 대기합니다.

공개 속성

앱 상태

void * AppState

애플리케이션별 데이터에 대한 포인터입니다.

공개 함수

GetBinding

Binding * GetBinding(
  void
) const 

WeaveEchoClient와 연결된 결합 객체에 대한 포인터를 반환합니다.

GetEventCallback

EventCallback GetEventCallback(
  void
) const 

현재 WeaveEchoClient 객체에 구성된 API 이벤트 콜백 함수 포인터를 반환합니다.

GetState

State GetState(
  void
) const 

WeaveEchoClient 객체의 현재 상태를 검색합니다.

Init

WEAVE_ERROR Init(
  Binding *binding,
  EventCallback eventCallback,
  void *appState
)

WeaveEchoClient 객체를 초기화합니다.

에코 메시지를 피어에 전송하기 위해 WeaveEchoClient 객체를 초기화합니다.

세부정보
매개변수
[in] binding
피어 노드와의 통신을 설정하는 데 사용될 Binding 객체입니다.
[in] eventCallback
WeaveEchoClient 객체에서 호출하여 API 이벤트를 애플리케이션에 전달하는 함수에 대한 포인터입니다.
[in] appState
API 이벤트가 발생할 때마다 애플리케이션에 다시 전달되는 애플리케이션 정의 객체에 대한 포인터입니다.

IsSendR반복

bool IsSendRrepeating() const 

WeaveEchoClient 객체가 현재 전송 반복 모드인 경우 true를 반환합니다.

요청 진행 중

bool RequestInProgress() const 

EchoRequest가 전송되고 WeaveEchoClient 객체가 응답을 기다리는 경우 true를 반환합니다.

보내기

WEAVE_ERROR Send(
  void
)

피어에 EchoRequest 메시지를 보냅니다.

이 메서드는 EchoRequest 메시지를 피어 노드에 보내는 프로세스를 시작합니다. 해당 EchoResponse 메시지가 수신되면 응답한 API 이벤트를 통해 애플리케이션으로 전송됩니다.

EchoRequest 메시지를 작성할 때 WeaveEchoClient는 PreparePayload API 이벤트를 통해 애플리케이션에 요청하여 메시지의 페이로드를 준비합니다.

이 메서드가 호출되었을 때 Binding 객체가 Ready 상태가 아니라면 Binding::RequestPrepare() 메서드에 요청하여 주문형 준비를 시작합니다. 전송 작업은 이 프로세스가 완료될 때까지 큐에 추가됩니다. 이 큐의 최대 깊이는 1입니다. 따라서 대기열에 이전 전송이 있는 동안 Send()를 호출하면 하나의 EchoRequest만 전송됩니다.

WeaveEchoClient가 전송 반복 모드에 있는 동안(즉, 이전에 SendRepeating()을 호출했기 때문에) Send()를 호출하면 전송 주기를 가속화하고 재설정하는 효과가 있지만 전송 반복 모드에서 WeaveEchoClient를 사용하지는 않습니다.

보내기

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

특정 페이로드가 있는 EchoRequest 메시지를 피어에 보냅니다.

이 메서드는 EchoRequest 메시지를 피어 노드에 보내는 프로세스를 시작합니다. 제공된 페이로드 버퍼의 콘텐츠는 EchoRequest 메시지의 페이로드로 피어에 전송됩니다. 해당 EchoResponse 메시지가 수신되면 응답한 API 이벤트를 통해 애플리케이션으로 전송됩니다.

이 메서드를 호출하면 제공된 페이로드 버퍼의 소유권이 WeaveEchoClient 객체에 전달되며, 이 객체에는 해제가 필요합니다. 메서드가 성공적으로 완료되었는지 또는 오류가 있는지에 관계없이 true입니다.

이 메서드가 호출되었을 때 Binding 객체가 Ready 상태가 아니라면 Binding::RequestPrepare() 메서드에 요청하여 주문형 준비를 시작합니다. 전송 작업은 이 프로세스가 완료될 때까지 큐에 추가됩니다. 이 큐의 최대 깊이는 1입니다. 따라서 대기열에 이전 전송이 있는 동안 Send()를 호출하면 하나의 EchoRequest만 전송됩니다.

WeaveEchoClient가 전송 반복 모드에 있는 동안(즉, 이전에 SendRepeating()을 호출했기 때문에) Send()를 호출하면 전송 주기를 가속화하고 재설정하는 효과가 있지만 전송 반복 모드에서 WeaveEchoClient를 사용하지는 않습니다.

세부정보
매개변수
[in] payloadBuf
피어에 전송할 페이로드 데이터가 포함된 PacketBuffer 객체입니다. 이 버퍼의 소유권은 모든 경우에 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 객체가 Ready 상태가 아니면 Binding::RequestPrepare() 메서드에 요청하여 주문형 준비를 시작합니다. 이 과정이 완료될 때까지 추가 메시지 전송은 일시중지됩니다. 주문형 결합 준비 중에 오류가 발생하면 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 이벤트에 대해 이 메서드를 호출해야 합니다. 제공된 매개변수는 클라이언트 객체가 애플리케이션의 이벤트 핸들러 함수에 전달한 매개변수와 동일해야 합니다.

세부정보
매개변수
[in] appState
클라이언트 객체와 연결된 애플리케이션 정의 상태 정보에 대한 포인터입니다.
[in] eventType
이벤트 콜백에서 전달한 이벤트 ID
[in] inParam
이벤트 콜백에서 전달한 입력 이벤트 매개변수의 참조
[in] outParam
이벤트 콜백에서 전달하는 출력 이벤트 매개변수의 참조