Documentation de référence de l'API de la bibliothèque cliente de télémétrie Rust

Cette page décrit les types, les méthodes et la gestion des erreurs dans la bibliothèque libsdv_telemetry_rust_wrapper.

Interface TelemetryServiceHolder

L'interface principale pour les clients est la structure TelemetryServiceHolder. Cette interface fournit l'ensemble des méthodes permettant de gérer la connexion au service, les configurations des métriques et les rapports de données.

Gestion du cycle de vie des services

Ces méthodes établissent et mettent fin à la connexion avec le service de télémétrie sous-jacent.

get

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

Méthode statique qui récupère un handle thread-safe pour le service de télémétrie. Il s'agit d'un appel bloquant qui attend que le service de liaison de télémétrie soit prêt. Le service de télémétrie n'accepte qu'une seule instance de TelemetryServiceHolder. L'appel de cette méthode plusieurs fois entraîne un comportement indéfini ou inattendu.

TelemetryServiceHolder implémente les traits Send et Sync, ce qui signifie qu'il peut être partagé de manière sécurisée entre les threads, par exemple en l'encapsulant dans une instance de Arc. La plupart des méthodes de TelemetryServiceHolder sont async et peuvent être utilisées simultanément.

Renvoie
TelemetryResult<TelemetryServiceHolder> Résultat contenant le handle du service ou l'instance TelemetryError si le service ne peut pas être obtenu

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<()>

Initialise le service en enregistrant des rappels asynchrones. Appelez cette méthode une fois après avoir obtenu le TelemetryServiceHolder et avant toute autre interaction.

Paramètres
misc_status_callback impl Fn(TelemetryServiceStatus) + Send + Sync + 'static : fermeture qui reçoit et traite les mises à jour d'état et d'erreur du service de télémétrie.
report_ready_callback impl Fn(ReportInfo) + Send + Sync + 'static : fermeture qui reçoit et traite les notifications lorsqu'un nouveau rapport sur les métriques est prêt à être récupéré.
Renvoie
TelemetryResult<()> Résultat vide en cas de réussite ou instance TelemetryError en cas d'échec

finish

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

Arrête la connexion au service en douceur, efface les écouteurs enregistrés et nettoie les ressources associées. Appelez cette méthode une fois lorsque l'application se termine.

Renvoie
TelemetryResult<()> Résultat vide en cas de réussite ou instance TelemetryError en cas d'échec

Gestion de la configuration des métriques

Ces méthodes asynchrones gèrent la définition et l'état des configurations de collecte de données.

Le service de télémétrie conserve les configurations dans deux états :

  • Inactive : la configuration est validée et stockée sur le disque, mais n'est pas utilisée pour la collecte de données.
  • Active : la configuration collecte des données et ses composants (déclencheurs, éditeurs, par exemple) sont actifs.

Pour que les configurations soient conservées lors des redémarrages du service et de l'appareil, le service les stocke sur le disque de l'appareil. Le service stocke toutes les configurations dans deux répertoires basés sur l'état, en les validant et, si nécessaire, en les activant au démarrage.

add_metrics_config

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

Ajoute une configuration de métriques au service. La configuration doit être fournie sous forme de tableau d'octets sérialisé. La configuration ajoutée est inactive par défaut.

Paramètres
serialized_config &[u8] : tranche d'octets contenant les données de configuration sérialisées au format protobuf.
Renvoie
TelemetryResult<String> Un résultat contenant le UUID de la configuration nouvellement ajoutée en cas de succès, ou une instance TelemetryError en cas d'échec

activate_metrics_config

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

Active une configuration de métriques précédemment ajoutée (ou désactivée), en lançant la collecte des données et la création de rapports.

Paramètres
config_uuid &str : UUID de la configuration à activer
Renvoie
TelemetryResult<String> Résultat contenant le UUID de la configuration activée en cas de succès, ou l'instance TelemetryError en cas d'échec

deactivate_metrics_config

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

Arrête la collecte et le reporting des données pour une configuration de métriques active. La configuration reste dans le service et peut être réactivée ultérieurement.

Paramètres
config_uuid &str : UUID de la configuration à désactiver
Renvoie
TelemetryResult<String> Résultat contenant l'UUID de la configuration désactivée en cas de réussite, ou l'instance TelemetryError en cas d'échec

remove_metrics_config

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

Supprime définitivement une configuration de métriques. Si la configuration est active, le service la désactive d'abord.

Paramètres
config_uuid &str : UUID de la configuration à supprimer
Renvoie
TelemetryResult<String> Résultat contenant l'UUID de la configuration supprimée en cas de réussite, ou l'instance TelemetryError en cas d'échec

remove_all_metrics_configs

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

Supprime toutes les configurations de métriques existantes et désactive celles qui sont actives.

Renvoie
TelemetryResult<String> Résultat contenant une chaîne de message d'état en cas de succès ou une instance TelemetryError en cas d'échec

get_active_metrics_config_uuids

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

Interroge le service pour obtenir la liste des UUID de toutes les configurations à l'état actif.

Renvoie
TelemetryResult<Vec<String>> Un résultat contenant un vecteur de chaînes UUID pour les configurations de métriques actives en cas de réussite, ou une instance TelemetryError en cas d'échec

get_inactive_metrics_config_uuids

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

Interroge le service pour obtenir la liste des UUID de toutes les configurations à l'état inactif.

Renvoie
TelemetryResult<Vec<String>> Résultat contenant un vecteur de chaînes UUID pour les configurations de métriques inactives en cas de réussite, ou une instance TelemetryError en cas d'échec

Gestion et récupération des rapports sur les métriques

Ces méthodes vous permettent d'interroger les rapports disponibles et de récupérer les données collectées.

get_metrics_report

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

Récupère les données complètes du rapport sur les métriques pour un UUID de rapport spécifique. Vous pouvez obtenir l'UUID du rapport à partir d'une notification à l'aide de report_ready_callback ou en appelant get_ready_reports_info.

Paramètres
report_uuid &str : UUID du rapport spécifique à récupérer
Renvoie
TelemetryResult<MetricsReport> Résultat contenant l'objet protobuf MetricsReport désérialisé en cas de réussite, ou l'instance TelemetryError en cas d'échec

get_ready_reports_info

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

Interroge le service de télémétrie pour obtenir la liste de tous les rapports terminés et prêts à être récupérés. Cela est utile pour vérifier l'état des rapports si une notification de rappel a été manquée (par exemple, si report_ready_callback a été enregistré tardivement).

Renvoie
TelemetryResult<Vec<ReportInfo>> Résultat contenant un vecteur d'objets ReportInfo en cas de réussite ou une instance TelemetryError en cas d'échec

Types de base, rappels et gestion des erreurs

libsdv_telemetry_rust_wrapper utilise un ensemble de types personnalisés pour interagir avec le service de télémétrie, gérer les rappels asynchrones et gérer les erreurs de service.

Types de réponses et d'erreurs de l'API

Ces types sont renvoyés directement par les méthodes de la bibliothèque pour indiquer la réussite ou l'échec immédiat de l'opération demandée.

TelemetryResult

La plupart des méthodes renvoient un TelemetryResult<T>, qui est un alias pour le type Result standard, spécialisé pour les erreurs au niveau du service :

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

TelemetryError

La structure TelemetryError encapsule tous les échecs et fournit des informations détaillées sur les erreurs spécifiques au service :

Champs
status TelemetryServiceStatusCodes : code d'erreur énumérable
message String : message descriptif détaillant l'erreur

TelemetryServiceStatusCodes

Énumération numérique représentant le résultat des appels d'API et des états de service internes. Ces codes sont utilisés dans TelemetryError et TelemetryServiceStatus. Exemple :

Codes
200 TELEMETRY_SERVICE_API_CALL_SUCCESS Opération réussie
402 METRICS_CONFIG_PARSE_ERROR Échec de l'analyse de la configuration des métriques
407 REMOVE_METRICS_CONFIG_FAILED Échec de la suppression de la configuration des métriques
417 METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR Échec de l'évaluation de l'expression spécifiée dans la configuration des métriques

Types de rappel asynchrones

Les écouteurs enregistrés (misc_status_callback et report_ready_callback) transmettent ces types au client pour fournir des informations sur les processus en arrière-plan.

TelemetryServiceStatus

La structure TelemetryServiceStatus sert d'argument pour la fermeture misc_status_callback de init, qui est enregistrée lors de l'initialisation du service. Il fournit des mises à jour asynchrones sur l'état du service et les problèmes d'exécution (par exemple, la déconnexion d'une source de données).

Champs
id usize : identifiant unique de l'événement d'état.
code TelemetryServiceStatusCodes : code d'état catégorisant l'événement
message String : description de l'état dans un format lisible
details Option<StatusDetails> : données structurées facultatives qui fournissent un contexte supplémentaire sur l'état

StatusDetails

Cette énumération encapsule des contextes d'erreur spécifiques. Si details est présent dans TelemetryServiceStatus, il s'agit de l'une des variantes suivantes :

Variantes
AggregationPublisherErrorDetails Une erreur s'est produite lors de l'agrégation des données
ServicePublisherErrorDetails Une erreur s'est produite lors de la tentative de connexion à un service
ConditionalTriggerErrorDetails Une erreur s'est produite lors de l'évaluation de l'expression d'un déclencheur conditionnel
MetricsReportGeneratorErrorDetails Une erreur s'est produite lors de la génération d'un rapport sur les métriques
ServiceErrorDetails Une erreur s'est produite lors de la réception d'un nouveau message d'un service
FileIOErrorDetails Une erreur d'E/S de fichier s'est produite

Chaque variante d'énumération contient des champs supplémentaires qui fournissent encore plus de contexte.

ReportInfo

La structure ReportInfo sert d'argument pour la fermeture report_ready_callback de init, qui est enregistrée lors de l'initialisation du service. Il contient les identifiants décrivant un rapport sur les métriques :

Champs
config_uuid String : UUID de la configuration des métriques ayant généré le rapport
report_uuid String : UUID du rapport sur les métriques prêt à être récupéré.

Le champ report_uuid est le seul nécessaire pour récupérer le rapport sur les métriques lui-même (voir get_metrics_report), tandis que config_uuid ne sert que d'information supplémentaire sur sa source.