En Google, luchamos por la equidad racial de la comunidad negra. Más información
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

nl :: Tejido:: Perfiles: 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.

Resumen

La clase WeaveEchoClient implementa el lado del iniciador del protocolo Weave Echo. De forma similar al protocolo de ping ICMP, el protocolo Weave Echo se puede utilizar para probar la vitalidad y la accesibilidad de un nodo Weave.

Las aplicaciones pueden usar la clase WeaveEchoClient para enviar mensajes EchoRequest únicos o repetidos a un nodo par identificado por un objeto Binding . Existe una clase correspondiente para responder a las solicitudes de eco (consulte WeaveEchoServer ).

Vinculación del cliente

WeaveEchoClient toma un objeto Weave Binding que se utiliza para identificar y establecer comunicación con el destinatario previsto de las solicitudes de eco. El enlace puede ser configurado y preparado por la aplicación antes de la inicialización del objeto WeaveEchoClient , o puede dejarse sin preparar, en cuyo caso el WeaveEchoClient solicitará la preparación del enlace bajo demanda (consulte Binding :: RequestPrepare () para obtener más detalles ).

También se solicitará la preparación a pedido del enlace si falla después de haber entrado en el estado Listo.

Enviar Modo de repetición

El método SendRepeating () se puede utilizar para poner WeaveEchoClient en modo SendRepeating. En este modo, el objeto cliente envía una secuencia repetida de mensajes EchoRequest al par en un intervalo configurado. El modo SendRepeating se puede cancelar llamando al método Stop () .

Multidifusión y difusión

Se puede utilizar un objeto WeaveEchoClient para enviar EchoRequests a varios destinatarios simultáneamente configurando el objeto Binding con una dirección de multidifusión IPv6 apropiada o una dirección de difusión de red local IPv4 (255.255.255.255). Cuando el objeto WeaveEchoClient detecta una dirección de pares de difusión o multidifusión, entra automáticamente en el modo de respuesta múltiple al enviar la EchoRequest.

En este modo, el objeto continúa escuchando y entregando todos los mensajes EchoResponse entrantes que llegan al mismo intercambio. El objeto permanece en modo MultiResponse hasta que: 1) la aplicación llama a Stop () o Send () , 2) en modo SendRepeating, llega el momento de enviar otra solicitud, o 3) no se recibe respuesta y el tiempo de espera de recepción expira.

Eventos API

Durante el curso de su funcionamiento, el objeto WeaveEchoClient llamará a la aplicación para solicitar acciones específicas o enviar notificaciones de eventos importantes. Estas llamadas de eventos de API se realizan a la función de devolución de llamada configurada actualmente en el objeto de cliente. Excepto donde se indique, las aplicaciones son libres de alterar el estado del cliente durante una devolución de llamada de evento. Una excepción general es el método Shutdown () del objeto, que nunca se puede llamar durante una devolución de llamada.

Se definen los siguientes eventos de API:

PreparePayload

WeaveEchoClient está a punto de formar un mensaje EchoRequest y solicita a la aplicación que proporcione una carga útil. Si una aplicación lo desea, puede devolver un nuevo PacketBuffer que contiene los datos de la carga útil. Si la aplicación no maneja este evento, se enviará automáticamente una EchoRequest con una carga útil de longitud cero. La aplicación NO PUEDE alterar el estado del WeaveEchoClient durante esta devolución de llamada.

Solicitud enviada

Se envió un mensaje EchoRequest al par.

Respuesta recibida

Se recibió un mensaje EchoResponse del par. Los argumentos del evento contienen la carga útil de la respuesta y la metainformación sobre el mensaje de respuesta.

Error de comunicación

Ocurrió un error mientras se formaba o enviaba una EchoRequest, o mientras esperaba una respuesta. Ejemplos de errores que pueden ocurrir mientras se espera una respuesta son los errores clave o el cierre inesperado de una conexión. Los argumentos del evento contienen el motivo del error.

ResponseTimeout

No se recibió una EchoResponse en el tiempo asignado. El tiempo de espera de respuesta está controlado por la propiedad DefaultResponseTimeout en el objeto Binding .

Solicitud cancelada

Se canceló un intercambio de eco en curso porque se hizo una solicitud para enviar otro EchoRequest antes de recibir una respuesta al mensaje anterior. Esto puede surgir en el modo SendRepeating cuando llega el momento de enviar la siguiente EchoRequest. Esto también puede suceder si la aplicación llama a Send () después de que se haya enviado una EchoRequest pero antes de que se reciba una respuesta.

Cuando el objeto está en modo MultiResponse, el evento se suprime si se ha recibido al menos un mensaje EchoResponse.

Constructores y Destructores

WeaveEchoClient (void)

Tipos públicos

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
}
enumeración
State {
kState_NotInitialized = 0,
kState_Idle = 1,
kState_PreparingBinding = 2,
kState_RequestInProgress = 3,
kState_WaitingToSend = 4
}
enumeración

Atributos públicos

AppState
void *
Un puntero a datos específicos de la aplicación.

Funciones publicas

GetBinding (void) const
Devuelve un puntero al objeto Binding asociado con WeaveEchoClient .
GetEventCallback (void) const
EventCallback
Devuelve un puntero a la función de devolución de llamada de eventos de API configurada actualmente en el objeto WeaveEchoClient .
GetState (void) const
Recupere el estado actual del objeto WeaveEchoClient .
Init ( Binding *binding, EventCallback eventCallback, void *appState)
Inicialice un objeto WeaveEchoClient .
IsSendRrepeating () const
bool
Devuelve verdadero si el objeto WeaveEchoClient se encuentra actualmente en modo de envío repetido.
RequestInProgress () const
bool
Devuelve verdadero si se ha enviado una EchoRequest y el objeto WeaveEchoClient está esperando una respuesta.
Send (void)
Envíe un mensaje EchoRequest al par.
Send (PacketBuffer *payloadBuf)
Envíe un mensaje EchoRequest al par con una carga útil específica.
SendRepeating (uint32_t sendIntervalMS)
Inicie el envío de una secuencia repetida de mensajes EchoRequest al par.
SetEventCallback (EventCallback eventCallback)
void
Establece la función de devolución de llamada de eventos de API en el objeto WeaveEchoClient .
Shutdown (void)
void
Apague un objeto WeaveEchoClient previamente inicializado.
Stop (void)
void
Detiene cualquier intercambio de eco en curso y cancela el modo de envío repetido.

Funciones estáticas públicas

DefaultEventHandler (void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
void
Controlador predeterminado para eventos de API WeaveEchoClient .

Estructuras

nl :: Weave :: Perfiles :: Echo_Next :: WeaveEchoClient :: InEventParam

Ingrese parámetros al evento de la API WeaveEchoClient .

nl :: Weave :: Perfiles :: Echo_Next :: WeaveEchoClient :: OutEventParam

Parámetros de salida al evento de la API WeaveEchoClient .

Tipos públicos

EventCallback

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

Tipo de evento

 EventType
Propiedades
kEvent_CommunicationError

Se produjo un error de comunicación al enviar una EchoRequest o al esperar una respuesta.

kEvent_DefaultCheck

Se utiliza para verificar el correcto manejo de eventos predeterminado en la aplicación.

kEvent_PreparePayload

Se solicita a la aplicación que prepare la carga útil para la solicitud de eco.

kEvent_RequestAborted

Se canceló un intercambio de eco en curso porque se realizó una solicitud para iniciar otro intercambio.

kEvent_RequestSent

Se envió un mensaje EchoRequest al par.

kEvent_ResponseReceived

Se recibió un mensaje EchoResponse del par.

kEvent_ResponseTimeout

No se recibió una EchoResponse en el tiempo asignado.

Expresar

 State
Propiedades
kState_Idle

El objeto de cliente está inactivo.

kState_NotInitialized

El objeto de cliente no está inicializado.

kState_PreparingBinding

El objeto de cliente está esperando que el enlace esté listo.

kState_RequestInProgress

Se ha enviado un mensaje EchoRequest y el objeto cliente está esperando una respuesta.

kState_WaitingToSend

Se ha llamado a SendRepeating () y el objeto cliente está esperando la próxima vez para enviar una EchoRequest.

Atributos públicos

AppState

void * AppState

Un puntero a datos específicos de la aplicación.

Funciones publicas

GetBinding

Binding * GetBinding(
  void
) const 

Devuelve un puntero al objeto Binding asociado con WeaveEchoClient .

GetEventCallback

EventCallback GetEventCallback(
  void
) const 

Devuelve un puntero a la función de devolución de llamada de eventos de API configurada actualmente en el objeto WeaveEchoClient .

GetState

State GetState(
  void
) const 

Recupere el estado actual del objeto WeaveEchoClient .

En eso

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

Inicialice un objeto WeaveEchoClient .

Inicialice un objeto WeaveEchoClient en preparación para enviar mensajes de eco a un par.

Detalles
Parámetros
[in] binding
Un objeto de enlace que se utilizará para establecer la comunicación con el nodo del mismo nivel.
[in] eventCallback
Un puntero a una función que será llamada por el objeto WeaveEchoClient para entregar eventos API a la aplicación.
[in] appState
Un puntero a un objeto definido por la aplicación que se devolverá a la aplicación cada vez que se produzca un evento de API.

IsSendRrepeating

bool IsSendRrepeating() const 

Devuelve verdadero si el objeto WeaveEchoClient está actualmente en modo de envío repetido.

RequestInProgress

bool RequestInProgress() const 

Devuelve verdadero si se ha enviado una EchoRequest y el objeto WeaveEchoClient está esperando una respuesta.

Enviar

WEAVE_ERROR Send(
  void
)

Envíe un mensaje EchoRequest al par.

Este método inicia el proceso de enviar un mensaje EchoRequest al nodo par. Si se recibe un mensaje EchoResponse correspondiente, se enviará a la aplicación a través del evento de API ResponseReceived.

Al formar el mensaje EchoRequest, WeaveEchoClient realiza una solicitud a la aplicación, a través del evento de API PreparePayload, para preparar la carga útil del mensaje.

Si el objeto Binding no está en el estado Listo cuando se llama a este método, se realizará una solicitud al método Binding :: RequestPrepare () para iniciar la preparación bajo demanda. La operación de envío se pondrá en cola hasta que se complete este proceso. La profundidad máxima de esta cola es uno. Por lo tanto, cualquier llamada a Send () mientras haya un envío anterior en la cola resultará en el envío de una única EchoRequest.

Llamar a Send () mientras WeaveEchoClient está en modo de repetición de envío (es decir, debido a una llamada anterior a SendRepeating () ) tiene el efecto de acelerar y restablecer el ciclo de envío, pero no saca a WeaveEchoClient del modo de repetición de envío.

Enviar

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

Envíe un mensaje EchoRequest al par con una carga útil específica.

Este método inicia el proceso de enviar un mensaje EchoRequest al nodo par. El contenido del búfer de carga útil proporcionado se enviará al par como la carga útil del mensaje EchoRequest. Si se recibe un mensaje EchoResponse correspondiente, se enviará a la aplicación a través del evento de API ResponseReceived.

Al llamar a este método, la propiedad del búfer de carga útil proporcionado pasa al objeto WeaveEchoClient , que tiene la responsabilidad de liberarlo. Esto es cierto independientemente de si el método se completa correctamente o con un error.

Si el objeto Binding no está en el estado Listo cuando se llama a este método, se realizará una solicitud al método Binding :: RequestPrepare () para iniciar la preparación bajo demanda. La operación de envío se pondrá en cola hasta que se complete este proceso. La profundidad máxima de esta cola es uno. Por lo tanto, cualquier llamada a Send () mientras haya un envío anterior en la cola resultará en el envío de una única EchoRequest.

Llamar a Send () mientras WeaveEchoClient está en modo de repetición de envío (es decir, debido a una llamada anterior a SendRepeating () ) tiene el efecto de acelerar y restablecer el ciclo de envío, pero no saca a WeaveEchoClient del modo de repetición de envío.

Detalles
Parámetros
[in] payloadBuf
Un objeto PacketBuffer que contiene datos de carga útil que se enviarán al par. La propiedad de este búfer pasa al objeto WeaveEchoClient en todos los casos.

EnviarRepetir

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

Inicie el envío de una secuencia repetida de mensajes EchoRequest al par.

Este método inicia un proceso repetitivo de envío de mensajes EchoRequest al par. A medida que los mensajes EchoResponse se reciben del par, se envían a la aplicación a través del evento de API ResponseReceived.

Cuando se llama a SendRepeating () , WeaveEchoClient entra en el modo de repetición de envío en el que permanece hasta que se llama a Stop () o se produce un error de vinculación . Llamar a SendRepeating () varias veces tiene el efecto de restablecer el ciclo de envío y actualizar el intervalo.

El envío inicial de una secuencia se produce en el momento en que se llama a SendRepeating () , o cuando el enlace está listo después de llamar a SendRepeating () (ver más abajo). Los envíos posteriores se producen a partir de entonces en el intervalo especificado.

Cada vez que se produce un envío, WeaveEchoClient realiza una solicitud a la aplicación, a través del evento de API PreparePayload, para preparar la carga útil del mensaje.

Si el objeto Binding no está en estado Listo cuando llega el momento de enviar un mensaje, se realizará una solicitud al método Binding :: RequestPrepare () para iniciar la preparación bajo demanda. Los envíos de mensajes repetidos adicionales se pausarán hasta que se complete este proceso. Un fallo durante bajo demanda Encuadernación preparación hará que el WeaveEchoClient para salir del modo de envío de repetición.

SetEventCallback

void SetEventCallback(
  EventCallback eventCallback
)

Establece la función de devolución de llamada de eventos de API en el objeto WeaveEchoClient .

Cerrar

void Shutdown(
  void
)

Apague un objeto WeaveEchoClient previamente inicializado.

Tenga en cuenta que este método solo se puede llamar si se ha llamado previamente al método Init () .

Detener

void Stop(
  void
)

Detiene cualquier intercambio de eco en curso y cancela el modo de envío repetido.

WeaveEchoClient

 WeaveEchoClient(
  void
)

Funciones estáticas públicas

DefaultEventHandler

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

Controlador predeterminado para eventos de API WeaveEchoClient .

Las aplicaciones deben llamar a este método para cualquier evento de API que no reconozcan o manejen. Los parámetros suministrados deben ser los mismos que los pasados ​​por el objeto cliente a la función de controlador de eventos de la aplicación.

Detalles
Parámetros
[in] appState
Un puntero a la información de estado definida por la aplicación asociada con el objeto del cliente.
[in] eventType
ID de evento pasado por la devolución de llamada del evento
[in] inParam
Referencia de los parámetros del evento de entrada pasados ​​por la devolución de llamada del evento
[in] outParam
Referencia de los parámetros del evento de salida pasados ​​por la devolución de llamada del evento