Libreria client di telemetria Rust

Un client di telemetria è un'app che interagisce con il servizio di telemetria per configurare la raccolta dei dati, gestire le configurazioni delle metriche e ricevere report di telemetria. I client utilizzano la libreria Rust libsdv_telemetry_rust_wrapper per interagire con il servizio.

Panoramica della superficie API

Consulta il riferimento API della libreria client di telemetria Rust per la documentazione dell'API.

La libreria fornisce un'interfaccia Rust per interagire con il servizio di telemetria sottostante. La libreria è responsabile delle seguenti aree:

  • Gestione del ciclo di vita del servizio:gestisce la connessione al servizio Telemetry.

    • Inizializzazione:stabilisce una connessione al servizio utilizzando una chiamata di blocco. Dopo la connessione, puoi registrare i richiami per ricevere notifiche asincrone sullo stato del sistema e sulla disponibilità di nuovi report.
    • Arresto:fornisce un modo per disconnettersi in modo controllato dal servizio e liberare spazio da tutte le risorse associate.
  • Gestione del ciclo di vita della configurazione delle metriche:offre il controllo sul ciclo di vita delle configurazioni delle metriche.

    • Gestione:i clienti possono aggiungere, rimuovere, attivare e disattivare le configurazioni delle metriche.
    • Ispezione: puoi eseguire query per l'elenco delle configurazioni attive e inattive.
  • Gestione e recupero dei report:facilita l'accesso ai dati raccolti dal servizio di telemetria.

    • Notifiche:invia notifiche ai client in modo asincrono utilizzando un callback ogni volta che un nuovo report sulle metriche è pronto per il recupero.
    • Accesso ai dati:fornisce metodi per recuperare report specifici in base al relativo UUID e per recuperare un elenco di tutti i report disponibili.
  • Report su stato ed errori:fornisce informazioni sullo stato e sull'integrità del servizio di telemetria.

    • Aggiornamenti di stato asincroni:i client ricevono aggiornamenti di stato in tempo reale, inclusi errori e avvisi, tramite un callback dedicato. In questo modo puoi implementare una gestione degli errori efficace e monitorare lo stato del servizio.

Esempio di utilizzo

Per un'app completa e compilabile che dimostri l'intero ciclo di vita, consulta l'implementazione del client di esempio: samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs.

Il client di esempio è un'utilità della riga di comando che interagisce con l'API della libreria completa. L'esempio mostra come collegare l'interfaccia basata su callback della libreria con un runtime Rust asincrono (Tokio) utilizzando i canali.

Il client esegue questa sequenza di operazioni:

  1. Stabilisce una connessione al servizio di telemetria e registra i callback per gli aggiornamenti di stato e le notifiche dei report sulle metriche.
  2. Legge i file di configurazione delle metriche forniti come argomenti della riga di comando, quindi aggiunge e attiva le configurazioni nel servizio.
  3. Utilizza un'attività in background per registrare i messaggi di stato asincroni (errori o avvisi) ricevuti dal servizio.
  4. Gestisce il ciclo di recupero dei dati eseguendo le seguenti azioni:
    • Attende una notifica che indica che un report sulle metriche è pronto.
    • Recupera i dati completi del report sulle metriche.
    • Scrive facoltativamente il report su disco come file binario del buffer di protocollo.
  5. Rimuove la configurazione delle metriche dal servizio una volta prodotto il primo report sulle metriche. Tieni presente che questa è un'implementazione demo e i tuoi client possono ricevere un numero qualsiasi di report.
  6. Chiude correttamente la connessione al servizio.