En Google, luchamos por la equidad racial de la comunidad negra. Más información

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

El WeaveEchoClient clase implementa el lado del iniciador del protocolo de la armadura Echo. 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 utilizar la WeaveEchoClient clase para enviar de una sola vez o repetir los mensajes EchoRequest a un nodo par identificado por un Binding objeto. Existe una clase correspondiente para responder a solicitudes de eco (véase WeaveEchoServer ).

cliente Encuadernación

El WeaveEchoClient toma un tejido Binding objeto que se utiliza para identificar y establecer la comunicación con el destinatario previsto de las peticiones de eco. La unión puede ser configurado y preparado por la aplicación antes de la inicialización de la WeaveEchoClient objeto, o puede ser dejado sin preparación, en cuyo caso el WeaveEchoClient solicitará preparación bajo demanda de la unión (ver Encuadernación :: RequestPrepare () para los detalles ).

On-demand preparación de la unión también se pedirá que debe fallar después de haber entrado en el estado Lista.

Enviar Modo de repetición

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

Multidifusión y difusión

A WeaveEchoClient objeto se puede utilizar para enviar EchoRequests a varios destinatarios simultáneamente mediante la configuración de la Binding objeto con una dirección de multidifusión IPv6 correspondiente o IPv4 dirección de difusión de la red local (255.255.255.255). Cuando el WeaveEchoClient objeto detecta una dirección de difusión o multidifusión pares, entra automáticamente en modo de multirespuesta al envío de 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 el modo multirespuesta hasta que: 1) la aplicación llama Stop () o Send () , 2) en el modo de SendRepeating, llega el momento de enviar otra solicitud, o 3) no se recibe respuesta y el tiempo de espera expira recibir.

Eventos API

Durante el curso de su funcionamiento, la WeaveEchoClient objeto llamará a la aplicación de acciones específicas de solicitud o entregar las 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 la devolución de llamada de un evento. Una excepción general es del objeto de apagado () método, que nunca puede ser llamado durante una devolución de llamada.

Se definen los siguientes eventos de API:

PreparePayload

El WeaveEchoClient está a punto de formar un mensaje de EchoRequest y está solicitando la aplicación para suministrar 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 de la 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

Se produjo 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 Binding objeto.

Solicitud cancelada

Se canceló un intercambio de eco en curso porque se hizo una solicitud para enviar otra solicitud de eco 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 ocurrir si la aplicación llama a send () después de una EchoRequest ha sido enviado, pero antes de que se recibió ninguna respuesta.

Cuando el objeto está en modo de respuesta múltiple, el evento se suprime si se ha recibido al menos un mensaje de respuesta de eco.

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 a la encuadernación objeto asociado al WeaveEchoClient .
GetEventCallback (void) const
EventCallback
Devuelve un puntero a la función de devolución de llamada API evento configurado actualmente en el WeaveEchoClient objeto.
GetState (void) const
Recuperar el estado actual de la WeaveEchoClient objeto.
Init ( Binding *binding, EventCallback eventCallback, void *appState)
Inicialice un WeaveEchoClient objeto.
IsSendRrepeating () const
bool
Devuelve verdadero si el WeaveEchoClient objeto está actualmente en modo de envío de repetición.
RequestInProgress () const
bool
Devuelve true si un EchoRequest ha sido enviado y el WeaveEchoClient objeto está a la espera de 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 API en el caso WeaveEchoClient objeto.
Shutdown (void)
void
Shutdown una previamente inicializado WeaveEchoClient objeto.
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 WeaveEchoClient sucesos de API.

Estructuras

nl :: Armadura :: Perfiles :: Echo_Next :: :: WeaveEchoClient InEventParam

Los parámetros de entrada a WeaveEchoClient suceso de la API.

nl :: Armadura :: Perfiles :: Echo_Next :: :: WeaveEchoClient OutEventParam

Los parámetros de salida a WeaveEchoClient suceso de la API.

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

SendRepeating () ha sido llamado y el objeto cliente está esperando la próxima vez que envíe un 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 a la encuadernación objeto asociado al WeaveEchoClient .

GetEventCallback

EventCallback GetEventCallback(
  void
) const 

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

GetState

State GetState(
  void
) const 

Recuperar el estado actual de la WeaveEchoClient objeto.

En eso

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

Inicialice un WeaveEchoClient objeto.

Inicializar un WeaveEchoClient objeto en la preparación para el envío de mensajes de eco a un compañero.

Detalles
Parámetros
[in] binding
A Encuadernación objeto que se utiliza para establecer la comunicación con el nodo par.
[in] eventCallback
Un puntero a una función que será llamada por el WeaveEchoClient objeto de entregar sucesos de 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 WeaveEchoClient objeto está actualmente en modo de envío de repetición.

RequestInProgress

bool RequestInProgress() const 

Devuelve true si un EchoRequest ha sido enviado y el WeaveEchoClient objeto está a la espera de 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.

Cuando se forma el mensaje EchoRequest, la WeaveEchoClient hace una petición a la aplicación, a través del evento API PreparePayload, para preparar la carga útil del mensaje.

Si el Binding objeto no está en el estado Preparado cuando se llama a este método, se hará una petición a Encuadernación :: RequestPrepare () método 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. Así, cualquier llamada a send () , mientras que hay una emisión precedente en la cola se traducirá en un solo EchoRequest de ser enviado.

Llamando Enviar () , mientras que el WeaveEchoClient está en modo de envío de repetición (es decir, debido a una llamada previa a SendRepeating () ) tiene el efecto de acelerar y reiniciar el ciclo de envío pero no toma la WeaveEchoClient fuera del modo de envío de repetición.

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 de la memoria intermedia de carga útil suministrado pasa a la WeaveEchoClient objeto, que tiene la responsabilidad de liberarla. Esto es cierto independientemente de si el método se completa correctamente o con un error.

Si el Binding objeto no está en el estado Preparado cuando se llama a este método, se hará una petición a Encuadernación :: RequestPrepare () método 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. Así, cualquier llamada a send () , mientras que hay una emisión precedente en la cola se traducirá en un solo EchoRequest de ser enviado.

Llamando Enviar () , mientras que el WeaveEchoClient está en modo de envío de repetición (es decir, debido a una llamada previa a SendRepeating () ) tiene el efecto de acelerar y reiniciar el ciclo de envío pero no toma la WeaveEchoClient fuera del modo de envío de repetición.

Detalles
Parámetros
[in] payloadBuf
Un objeto PacketBuffer que contiene datos de carga útil que se enviarán al par. La propiedad de esta memoria intermedia pasa a la WeaveEchoClient objeto 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 SendRepeating () se llama, el WeaveEchoClient entra en el modo de envío de repetición en la que se mantiene hasta Stop () se llama o una Binding se produce error. Llamando SendRepeating () varias veces tiene el efecto de restablecer el ciclo de envío y la actualización del intervalo.

El envío inicial de una secuencia se produce en el momento SendRepeating () se llama, o siempre que la unión se convierte listo después SendRepeating () se llama (ver abajo). Los envíos subsiguientes ocurren a partir de entonces en el intervalo especificado.

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

Si la encuadernación objeto no está en el estado Preparado cuando llega el momento de enviar un mensaje, se hará una petición a la encuadernación :: RequestPrepare () método 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 API en el caso WeaveEchoClient objeto.

Cerrar

void Shutdown(
  void
)

Shutdown una previamente inicializado WeaveEchoClient objeto.

Tenga en cuenta que este método sólo se puede llamar si el Init () método ha sido llamado con anterioridad.

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 WeaveEchoClient sucesos de API.

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