Un cliente de telemetría es una app que interactúa con el servicio de telemetría para configurar la recopilación de datos, administrar la configuración de métricas y recibir informes de telemetría. Los clientes usan la biblioteca libsdv_telemetry_rust_wrapper de Rust para interactuar con el servicio.
Descripción general de la superficie de la API
Consulta la referencia de la API de la biblioteca cliente de telemetría de Rust para obtener documentación sobre la API.
La biblioteca proporciona una interfaz de Rust para interactuar con el servicio de telemetría subyacente y es responsable de las siguientes áreas:
Administración del ciclo de vida del servicio: Administra la conexión al servicio de Telemetría.
- Inicialización: Establece una conexión con el servicio a través de una llamada de bloqueo. Después de conectarte, puedes registrar devoluciones de llamada para recibir notificaciones asíncronas sobre el estado del sistema y la disponibilidad de informes nuevos.
- Apagado: Proporciona una forma de desconectarse correctamente del servicio y limpiar todos los recursos asociados.
Administración del ciclo de vida de la configuración de métricas: Ofrece control sobre el ciclo de vida de la configuración de métricas.
- Administración: Los clientes pueden agregar, quitar, activar y desactivar configuraciones de métricas.
- Inspección: Puedes consultar la lista de configuraciones activas e inactivas.
Manejo y recuperación de informes: Facilita el acceso a los datos recopilados por el servicio de telemetría.
- Notificaciones: Notifica a los clientes de forma asíncrona a través de una devolución de llamada cada vez que un nuevo informe de métricas esté listo para recuperarse.
- Acceso a los datos: Proporciona métodos para recuperar informes específicos por su UUID y para recuperar una lista de todos los informes disponibles.
Informes de estado y errores: Proporcionan estadísticas sobre el estado del servicio de Telemetría.
- Actualizaciones de estado asíncronas: Los clientes reciben actualizaciones de estado en tiempo real, incluidos errores y advertencias, a través de una devolución de llamada dedicada. Esto te permite implementar un manejo de errores sólido y supervisar el estado del servicio.
Ejemplo de uso
Para ver una app completa y compilable que demuestre el ciclo de vida completo, consulta la implementación del cliente de muestra: samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs.
El cliente de muestra es una utilidad de línea de comandos que interactúa con la API de la biblioteca completa. En el ejemplo, se muestra cómo conectar la interfaz basada en devoluciones de llamada de la biblioteca con un tiempo de ejecución asíncrono de Rust (Tokio) a través de canales.
El cliente realiza esta secuencia de operaciones:
- Establece una conexión con el servicio de telemetría y registra devoluciones de llamada para las notificaciones de actualizaciones de estado y de informes de métricas.
- Lee los archivos de configuración de métricas proporcionados como argumentos de la línea de comandos y, luego, agrega y activa las configuraciones en el servicio.
- Usa una tarea en segundo plano para registrar mensajes de estado asíncronos (errores o advertencias) recibidos del servicio.
- Administra el bucle de recuperación de datos realizando las siguientes acciones:
- Espera una notificación que indique que un informe de métricas está listo.
- Recupera los datos completos del informe de métricas.
- Opcionalmente, escribe el informe en el disco como un archivo de búfer de protocolo binario.
- Quita la configuración de métricas del servicio una vez que se genera el primer informe de métricas. Ten en cuenta que esta es una implementación de demostración y que tus propios clientes pueden recibir cualquier cantidad de informes.
- Cierra la conexión al servicio de forma correcta.