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) | typedefvoid(* |
EventType { | enumeración |
State { | enumeración |
Atributos públicos | |
---|---|
AppState | void * Un puntero a datos específicos de la aplicación. |
Funciones publicas | |
---|---|
GetBinding (void) const | Binding * 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
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.
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 |
|
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 |
|
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 |
|