Biblioteka klienta telemetrii Rust

Klient telemetrii to aplikacja, która wchodzi w interakcję z usługą telemetrii w celu konfigurowania zbierania danych, zarządzania konfiguracjami danych i otrzymywania raportów telemetrycznych. Klienci używają biblioteki libsdv_telemetry_rust_wrapper Rust do interakcji z usługą.

Omówienie interfejsu API

Dokumentację interfejsu API znajdziesz w dokumentacji interfejsu API biblioteki klienta telemetrii Rust.

Biblioteka udostępnia interfejs Rusta do interakcji z usługą telemetrii. Odpowiada ona za te obszary:

  • Zarządzanie cyklem życia usługi: zarządza połączeniem z usługą telemetrii.

    • Inicjowanie: nawiązuje połączenie z usługą za pomocą wywołania blokującego. Po nawiązaniu połączenia możesz zarejestrować wywołania zwrotne, aby otrzymywać asynchroniczne powiadomienia o stanie systemu i dostępności nowych raportów.
    • Wyłączanie: umożliwia prawidłowe odłączenie się od usługi i wyczyszczenie wszystkich powiązanych zasobów.
  • Zarządzanie cyklem życia konfiguracji wskaźników: umożliwia kontrolowanie cyklu życia konfiguracji wskaźników.

    • Zarządzanie: klienci mogą dodawać, usuwać, aktywować i dezaktywować konfiguracje danych.
    • Sprawdzanie: możesz wysłać zapytanie o listę aktywnych i nieaktywnych konfiguracji.
  • Obsługa i pobieranie raportów: ułatwia dostęp do danych zbieranych przez usługę telemetrii.

    • Powiadomienia: asynchronicznie powiadamia klientów za pomocą wywołania zwrotnego, gdy nowy raport o danych jest gotowy do pobrania.
    • Dostęp do danych: udostępnia metody pobierania konkretnych raportów według ich identyfikatora UUID i pobierania listy wszystkich dostępnych raportów.
  • Raportowanie stanu i błędów: zapewnia wgląd w stan usługi telemetrii.

    • Asynchroniczne aktualizacje stanu: klienci otrzymują aktualizacje stanu w czasie rzeczywistym, w tym błędy i ostrzeżenia, za pomocą specjalnego wywołania zwrotnego. Umożliwia to wdrożenie niezawodnej obsługi błędów i monitorowanie stanu usługi.

Przykład użycia

Kompletną, kompilowalną aplikację, która pokazuje pełny cykl życia, znajdziesz w przykładowej implementacji klienta:samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs.

Przykładowy klient to narzędzie wiersza poleceń, które wchodzi w interakcję z pełną biblioteką interfejsu API. Ten przykład pokazuje, jak połączyć interfejs biblioteki oparty na wywołaniach zwrotnych z asynchronicznym środowiskiem wykonawczym Rust (Tokio) za pomocą kanałów.

Klient wykonuje tę sekwencję operacji:

  1. Ustanawia połączenie z usługą telemetrii i rejestruje wywołania zwrotne w celu otrzymywania powiadomień o aktualizacjach stanu i raportach o danych.
  2. Odczytuje pliki konfiguracji wskaźników podane jako argumenty wiersza poleceń, a następnie dodaje i aktywuje konfiguracje w usłudze.
  3. Używa zadania w tle do rejestrowania asynchronicznych komunikatów o stanie (błędów lub ostrzeżeń) otrzymywanych z usługi.
  4. Zarządza pętlą pobierania danych, wykonując te czynności:
    • Czeka na powiadomienie o tym, że raport z danymi jest gotowy.
    • Pobiera pełne dane raportu o rodzajach danych.
    • Opcjonalnie zapisuje raport na dysku jako binarny plik bufora protokołu.
  5. Usuwa konfigurację danych z usługi po wygenerowaniu pierwszego raportu z danymi. Pamiętaj, że jest to implementacja demonstracyjna, a Twoi klienci mogą otrzymywać dowolną liczbę raportów.
  6. Płynnie zamyka połączenie z usługą.