Referencia de la API de la biblioteca cliente de telemetría de Rust

En esta página, se describen los tipos, los métodos y el manejo de errores en la biblioteca de libsdv_telemetry_rust_wrapper.

Interfaz TelemetryServiceHolder

La interfaz principal para los clientes es la estructura TelemetryServiceHolder. Esta interfaz proporciona el conjunto completo de métodos para administrar la conexión de servicio, las configuraciones de métricas y los informes de datos.

Administración del ciclo de vida del servicio

Estos métodos establecen y finalizan la conexión con el servicio de telemetría subyacente.

get

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

Es un método estático que recupera un identificador seguro para subprocesos del servicio de Telemetry. Esta es una llamada de bloqueo que espera hasta que el servicio de vinculación de telemetría esté listo. El servicio de Telemetría solo admite una instancia de TelemetryServiceHolder. Si se llama a este método más de una vez, se produce un comportamiento indefinido o inesperado.

TelemetryServiceHolder implementa los rasgos Send y Sync, lo que significa que se puede compartir de forma segura entre subprocesos, por ejemplo, envolviéndolo en una instancia de Arc. La mayoría de los métodos de TelemetryServiceHolder son async y se pueden usar de forma simultánea.

Muestra
TelemetryResult<TelemetryServiceHolder> Un resultado que contiene el identificador del servicio o una instancia de TelemetryError si no se puede obtener el servicio

init

pub async fn init(
    &self,
    misc_status_callback: impl Fn(TelemetryServiceStatus) + Send + Sync + 'static,
    report_ready_callback: impl Fn(ReportInfo) + Send + Sync + 'static,
) -> TelemetryResult<()>

Inicializa el servicio registrando devoluciones de llamada asíncronas. Llama a este método una vez después de obtener TelemetryServiceHolder y antes de cualquier otra interacción.

Parámetros
misc_status_callback impl Fn(TelemetryServiceStatus) + Send + Sync + 'static: Es un cierre que recibe y procesa actualizaciones de estado y errores del servicio de Telemetría.
report_ready_callback impl Fn(ReportInfo) + Send + Sync + 'static: Es un cierre que recibe y procesa notificaciones cuando un nuevo informe de métricas está listo para recuperarse.
Muestra
TelemetryResult<()> Un resultado vacío si la operación se realiza correctamente o una instancia de TelemetryError si falla

finish

pub fn finish(&self) -> TelemetryResult<()>

Cierra correctamente la conexión de servicio, borra los objetos de escucha registrados y limpia los recursos asociados. Llama a este método una vez cuando finalice la app.

Muestra
TelemetryResult<()> Un resultado vacío si la operación se realiza correctamente o una instancia de TelemetryError si falla

Administración de la configuración de métricas

Estos métodos asíncronos administran la definición y el estado de las configuraciones de recopilación de datos.

El servicio de Telemetría mantiene las configuraciones en dos estados:

  • Inactiva: La configuración se valida y se almacena en el disco, pero no se usa para la recopilación de datos.
  • Activa: La configuración recopila datos y sus componentes (activadores, publicadores, por ejemplo) están activos.

Para garantizar que las configuraciones persistan en los reinicios del servicio y del dispositivo, el servicio las almacena en el disco del dispositivo. El servicio almacena todas las configuraciones en dos directorios basados en el estado, los valida y, si es necesario, los activa durante el inicio.

add_metrics_config

pub async fn add_metrics_config(&self, serialized_config: &[u8]) -> TelemetryResult<String>

Agrega una nueva configuración de métricas al servicio. La configuración se debe proporcionar como un array de bytes serializado. La configuración agregada está inactiva de forma predeterminada.

Parámetros
serialized_config &[u8]: Es un segmento de bytes que contiene los datos de configuración serializados en protobuf.
Muestra
TelemetryResult<String> Un resultado que contiene el UUID de la configuración agregada recientemente si la operación se realiza correctamente o una instancia de TelemetryError si falla.

activate_metrics_config

pub async fn activate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>

Activa una configuración de métricas agregada (o desactivada) anteriormente, e inicia su recopilación de datos y generación de informes.

Parámetros
config_uuid &str: Es el UUID de la configuración que se activará.
Muestra
TelemetryResult<String> Un resultado que contiene el UUID de la configuración activada si la operación se realiza correctamente o una instancia de TelemetryError si falla

deactivate_metrics_config

pub async fn deactivate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>

Detiene la recopilación y la generación de informes de datos para una configuración de métricas activa. La configuración permanece en el servicio y se puede reactivar más adelante.

Parámetros
config_uuid &str: Es el UUID de la configuración que se desactivará.
Muestra
TelemetryResult<String> Resultado que contiene el UUID de la configuración desactivada si la operación se realiza correctamente o una instancia de TelemetryError si falla

remove_metrics_config

pub async fn remove_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>

Quita una configuración de métricas de forma permanente. Si la configuración está activa, el servicio la desactiva primero.

Parámetros
config_uuid &str: Es el UUID de la configuración que se quitará.
Muestra
TelemetryResult<String> Un resultado que contiene el UUID de la configuración quitada si la operación se realiza correctamente o una instancia de TelemetryError si falla

remove_all_metrics_configs

pub async fn remove_all_metrics_configs(&self) -> TelemetryResult<String>

Quita todos los parámetros de configuración de métricas existentes y desactiva los que estén activos.

Muestra
TelemetryResult<String> Un resultado que contiene una cadena de mensaje de estado si la operación se realiza correctamente o una instancia de TelemetryError si falla

get_active_metrics_config_uuids

pub async fn get_active_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>

Consulta el servicio para obtener una lista de UUID de todas las configuraciones en el estado activo.

Muestra
TelemetryResult<Vec<String>> Es un resultado que contiene un vector de cadenas de UUID para las configuraciones de métricas activas si la operación se realiza correctamente o una instancia de TelemetryError si falla.

get_inactive_metrics_config_uuids

pub async fn get_inactive_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>

Consulta el servicio para obtener una lista de UUID de todas las configuraciones en estado inactivo.

Muestra
TelemetryResult<Vec<String>> Es un resultado que contiene un vector de cadenas de UUID para las configuraciones de métricas inactivas si la operación se realiza correctamente o una instancia de TelemetryError si falla.

Control y recuperación de informes de métricas

Estos métodos te permiten consultar los informes disponibles y recuperar los datos recopilados de los informes.

get_metrics_report

pub async fn get_metrics_report(&self, report_uuid: &str) -> TelemetryResult<MetricsReport>

Recupera los datos completos del informe de métricas para un UUID de informe específico. Puedes obtener el UUID del informe desde una notificación con report_ready_callback o llamando a get_ready_reports_info.

Parámetros
report_uuid &str: Es el UUID del informe específico que se recuperará.
Muestra
TelemetryResult<MetricsReport> Un resultado que contiene el objeto MetricsReport de protobuf deserializado en caso de éxito o la instancia de TelemetryError en caso de error

get_ready_reports_info

pub async fn get_ready_reports_info(&self) -> TelemetryResult<Vec<ReportInfo>>

Consulta el servicio de Telemetría para obtener una lista de todos los informes que se completaron y están listos para recuperarse. Esto es útil para verificar el estado de los informes si se omitió una notificación de devolución de llamada (por ejemplo, si report_ready_callback se registró tarde).

Muestra
TelemetryResult<Vec<ReportInfo>> Un resultado que contiene un vector de objetos ReportInfo en caso de éxito o una instancia de TelemetryError en caso de error

Tipos principales, devoluciones de llamada y control de errores

El libsdv_telemetry_rust_wrapper usa un conjunto de tipos personalizados para interactuar con el servicio de Telemetría, administrar devoluciones de llamada asíncronas y controlar errores del servicio.

Tipos de errores y respuestas de la API

Los métodos de la biblioteca devuelven estos tipos directamente para indicar el éxito o el error inmediato de la operación solicitada.

TelemetryResult

La mayoría de los métodos devuelven un TelemetryResult<T>, que es un alias para el tipo Result estándar, especializado para errores a nivel del servicio:

pub type TelemetryResult<T> = Result<T, TelemetryError>;

TelemetryError

La estructura TelemetryError encapsula todas las fallas y proporciona información detallada sobre los errores específicos del servicio:

Campos
status TelemetryServiceStatusCodes: Código de error enumerable
message String: Es un mensaje descriptivo que detalla el error.

TelemetryServiceStatusCodes

Es una enumeración numérica que representa el resultado de las llamadas a la API y los estados internos del servicio. Estos códigos se usan en TelemetryError y TelemetryServiceStatus. Por ejemplo:

Codes
200 TELEMETRY_SERVICE_API_CALL_SUCCESS Listo
402 METRICS_CONFIG_PARSE_ERROR No se pudo analizar la configuración de las métricas
407 REMOVE_METRICS_CONFIG_FAILED No se pudo quitar la configuración de métricas
417 METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR No se pudo evaluar la expresión especificada en la configuración de métricas

Tipos de devolución de llamada asíncrona

Los objetos de escucha registrados (misc_status_callback y report_ready_callback) pasan estos tipos al cliente para proporcionar actualizaciones sobre los procesos en segundo plano.

TelemetryServiceStatus

La estructura TelemetryServiceStatus funciona como un argumento para el cierre misc_status_callback de init, que se registra durante la inicialización del servicio. Proporciona actualizaciones asíncronas sobre el estado del servicio y los problemas de tiempo de ejecución, por ejemplo, la desconexión de una fuente de datos.

Campos
id usize: Es un identificador único para el evento de estado.
code TelemetryServiceStatusCodes: Código de estado que categoriza el evento
message String: Es una descripción legible del estado.
details Option<StatusDetails>: Datos estructurados opcionales que proporcionan contexto adicional sobre el estado

StatusDetails

Este enum contiene contextos de error específicos. Si details está presente en TelemetryServiceStatus, es una de las siguientes variantes:

Variantes
AggregationPublisherErrorDetails Se produjo un error al agregar los datos
ServicePublisherErrorDetails Se produjo un error al intentar conectarse a un servicio
ConditionalTriggerErrorDetails Se produjo un error al evaluar la expresión de un activador condicional
MetricsReportGeneratorErrorDetails Se produjo un error al generar un informe de métricas
ServiceErrorDetails Se produjo un error al recibir un mensaje nuevo de un servicio
FileIOErrorDetails Se produjo un error de E/S de archivo

Cada variante de enumeración contiene campos adicionales que proporcionan aún más contexto.

ReportInfo

La estructura ReportInfo sirve como argumento para el cierre report_ready_callback de init, que se registra durante la inicialización del servicio. Contiene los identificadores que describen un informe de métricas:

Campos
config_uuid String: Es el UUID de la configuración de métricas que generó el informe.
report_uuid String: Es el UUID del informe de métricas que está listo para recuperarse.

El campo report_uuid es el único necesario para recuperar el informe de métricas (consulta get_metrics_report), mientras que config_uuid solo sirve como información adicional sobre su fuente.