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.