Na tej stronie opisujemy typy, metody i obsługę błędów w bibliotece libsdv_telemetry_rust_wrapper.
Interfejs TelemetryServiceHolder
Głównym interfejsem dla klientów jest struktura TelemetryServiceHolder. Ten interfejs udostępnia pełny zestaw metod zarządzania połączeniem z usługą, konfiguracjami danych i raportami o danych.
Zarządzanie cyklem życia usługi
Te metody nawiązują i zamykają połączenie z usługą telemetrii.
get
pub fn get() -> TelemetryResult<TelemetryServiceHolder>
Metoda statyczna, która pobiera bezpieczny wątkowo uchwyt do usługi Telemetry.
Jest to wywołanie blokujące, które czeka, aż usługa powiązań telemetrii będzie gotowa.
Usługa telemetrii obsługuje tylko 1 instancję TelemetryServiceHolder. Wywołanie tej metody więcej niż raz powoduje nieokreślone lub nieoczekiwane zachowanie.
TelemetryServiceHolder implementuje cechy Send i Sync, co oznacza, że można ją bezpiecznie udostępniać w wątkach, np. poprzez opakowanie jej w instancji Arc. Większość metod TelemetryServiceHolder jest async i może być używana współbieżnie.
| Zwraca | |
|---|---|
TelemetryResult<TelemetryServiceHolder>
|
Wynik zawierający uchwyt usługi lub instancję TelemetryError, jeśli nie można uzyskać usługi.
|
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<()>
Inicjuje usługę przez zarejestrowanie wywołań zwrotnych asynchronicznych. Wywołaj tę metodę raz po uzyskaniu wartości TelemetryServiceHolder i przed wykonaniem jakichkolwiek innych działań.
| Parametry | |
|---|---|
misc_status_callback
|
impl Fn(TelemetryServiceStatus) + Send + Sync +
'static: zamknięcie, które odbiera i przetwarza aktualizacje stanu i błędów z usługi telemetrycznej. |
report_ready_callback
|
impl Fn(ReportInfo) + Send + Sync + 'static: funkcja zamykająca, która odbiera i przetwarza powiadomienia, gdy nowy raport danych jest gotowy do pobrania. |
| Zwraca | |
|---|---|
TelemetryResult<()>
|
Pusty wynik w przypadku powodzenia lub instancja TelemetryError w przypadku niepowodzenia.
|
zakończ
pub fn finish(&self) -> TelemetryResult<()>
Grzecznie zamyka połączenie z usługą, czyści zarejestrowanych odbiorców i usuwa powiązane zasoby. Wywołaj tę metodę raz po zakończeniu działania aplikacji.
| Zwraca | |
|---|---|
TelemetryResult<()>
|
Pusty wynik w przypadku powodzenia lub instancja TelemetryError w przypadku niepowodzenia.
|
Zarządzanie konfiguracją danych
Te metody asynchroniczne zarządzają definicją i stanem konfiguracji zbierania danych.
Usługa telemetrii utrzymuje konfiguracje w 2 stanach:
- Nieaktywna:konfiguracja jest weryfikowana i przechowywana na dysku, ale nie jest używana do zbierania danych.
- Aktywna: konfiguracja zbiera dane, a jej komponenty (np. wyzwalacze, wydawcy) są aktywne.
Aby konfiguracje były zachowywane po ponownym uruchomieniu usługi i urządzenia, usługa zapisuje je na dysku urządzenia. Usługa przechowuje wszystkie konfiguracje w 2 katalogach opartych na stanie, weryfikując je i w razie potrzeby aktywując podczas uruchamiania.
add_metrics_config
pub async fn add_metrics_config(&self, serialized_config: &[u8]) -> TelemetryResult<String>
Dodaje do usługi nową konfigurację wskaźników. Konfiguracja musi być podana jako serializowana tablica bajtów. Dodana konfiguracja jest domyślnie nieaktywna.
| Parametry | |
|---|---|
serialized_config
|
&[u8]: wycinek bajtów zawierający dane konfiguracyjne w formacie protobuf.
|
| Zwraca | |
|---|---|
TelemetryResult<String>
|
Wynik zawierający identyfikator UUID nowo dodanej konfiguracji w przypadku powodzenia lub instancję TelemetryError w przypadku niepowodzenia.
|
activate_metrics_config
pub async fn activate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
Aktywuje wcześniej dodaną (lub dezaktywowaną) konfigurację danych, rozpoczynając zbieranie danych i raportowanie.
| Parametry | |
|---|---|
config_uuid
|
&str: identyfikator UUID konfiguracji do aktywacji. |
| Zwraca | |
|---|---|
TelemetryResult<String>
|
Wynik zawierający identyfikator UUID aktywowanej konfiguracji w przypadku powodzenia lub instancję TelemetryError w przypadku niepowodzenia.
|
deactivate_metrics_config
pub async fn deactivate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
Zatrzymuje zbieranie danych i raportowanie w przypadku aktywnej konfiguracji danych. Konfiguracja pozostaje w usłudze i można ją później ponownie aktywować.
| Parametry | |
|---|---|
config_uuid
|
&str: identyfikator UUID konfiguracji do dezaktywacji |
| Zwraca | |
|---|---|
TelemetryResult<String>
|
Wynik zawierający identyfikator UUID zdezaktywowanej konfiguracji w przypadku powodzenia lub instancję TelemetryError w przypadku niepowodzenia.
|
remove_metrics_config
pub async fn remove_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
Trwale usuwa konfigurację danych. Jeśli konfiguracja jest aktywna, usługa najpierw ją dezaktywuje.
| Parametry | |
|---|---|
config_uuid
|
&str: identyfikator UUID konfiguracji do usunięcia. |
| Zwraca | |
|---|---|
TelemetryResult<String>
|
Wynik zawierający identyfikator UUID usuniętej konfiguracji w przypadku powodzenia lub instancję TelemetryError w przypadku niepowodzenia.
|
remove_all_metrics_configs
pub async fn remove_all_metrics_configs(&self) -> TelemetryResult<String>
Usuwa wszystkie dotychczasowe konfiguracje danych, dezaktywując te, które są aktywne.
| Zwraca | |
|---|---|
TelemetryResult<String>
|
Wynik zawierający ciąg komunikatu o stanie w przypadku powodzenia lub instancję TelemetryError w przypadku niepowodzenia.
|
get_active_metrics_config_uuids
pub async fn get_active_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
Wysyła do usługi zapytanie o listę identyfikatorów UUID wszystkich konfiguracji w stanie aktywnym.
| Zwraca | |
|---|---|
TelemetryResult<Vec<String>>
|
Wynik zawierający wektor ciągów UUID dla aktywnych konfiguracji danych w przypadku powodzenia lub TelemetryError w przypadku niepowodzenia.
|
get_inactive_metrics_config_uuids
pub async fn get_inactive_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
Wysyła do usługi zapytanie o listę identyfikatorów UUID wszystkich konfiguracji w stanie nieaktywnym.
| Zwraca | |
|---|---|
TelemetryResult<Vec<String>>
|
Wynik zawierający wektor ciągów UUID dla nieaktywnych konfiguracji danych o skuteczności w przypadku powodzenia lub instancji TelemetryError w przypadku niepowodzenia.
|
Obsługa i pobieranie raportu o danych
Te metody umożliwiają wysyłanie zapytań o dostępne raporty i pobieranie zebranych danych raportu.
get_metrics_report
pub async fn get_metrics_report(&self, report_uuid: &str) -> TelemetryResult<MetricsReport>
Pobiera pełne dane raportu o rodzajach danych dla konkretnego identyfikatora UUID raportu. Identyfikator UUID raportu możesz uzyskać z powiadomienia, korzystając z metody report_ready_callback lub wywołując metodę get_ready_reports_info.
| Parametry | |
|---|---|
report_uuid
|
&str: Identyfikator UUID konkretnego raportu do pobrania. |
| Zwraca | |
|---|---|
TelemetryResult<MetricsReport>
|
Wynik zawierający zdeserializowany obiekt protokołu MetricsReport w przypadku powodzenia lub instancję TelemetryError w przypadku niepowodzenia.
|
get_ready_reports_info
pub async fn get_ready_reports_info(&self) -> TelemetryResult<Vec<ReportInfo>>
Wysyła do usługi Telemetry zapytanie o listę wszystkich raportów, które zostały ukończone i są gotowe do pobrania. Jest to przydatne do sprawdzania stanu raportów, jeśli powiadomienie zwrotne zostało pominięte (np. jeśli report_ready_callback zostało zarejestrowane z opóźnieniem).
| Zwraca | |
|---|---|
TelemetryResult<Vec<ReportInfo>>
|
Wynik zawierający wektor obiektów ReportInfo w przypadku powodzenia lub instancję TelemetryError w przypadku niepowodzenia.
|
Podstawowe typy, wywołania zwrotne i obsługa błędów
libsdv_telemetry_rust_wrapper korzysta z zestawu typów niestandardowych do interakcji z usługą telemetrii, zarządzania wywołaniami zwrotnymi asynchronicznymi i obsługi błędów usługi.
Odpowiedzi interfejsu API i typy błędów
Te typy są zwracane bezpośrednio przez metody biblioteki, aby wskazać natychmiastowy sukces lub niepowodzenie żądanej operacji.
TelemetryResult
Większość metod zwraca TelemetryResult<T>, czyli alias standardowego typu Result, wyspecjalizowany pod kątem błędów na poziomie usługi:
pub type TelemetryResult<T> = Result<T, TelemetryError>;
TelemetryError
Struktura TelemetryError obejmuje wszystkie błędy i zawiera szczegółowe informacje o błędach specyficzne dla usługi:
| Pola | |
|---|---|
status
|
TelemetryServiceStatusCodes: kod błędu z możliwością wyliczenia
|
message
|
String: opisowy komunikat zawierający szczegóły błędu. |
TelemetryServiceStatusCodes
Wartość liczbowa reprezentująca wynik wywołań interfejsu API i stanów usług wewnętrznych. Te kody są używane zarówno w TelemetryError, jak i w TelemetryServiceStatus. Przykład:
| Kody | ||
|---|---|---|
200
|
TELEMETRY_SERVICE_API_CALL_SUCCESS
|
Sukces |
402
|
METRICS_CONFIG_PARSE_ERROR
|
Nie udało się przeanalizować konfiguracji wskaźników |
407
|
REMOVE_METRICS_CONFIG_FAILED
|
Nie udało się usunąć konfiguracji wskaźników |
417
|
METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR
|
Nie udało się ocenić wyrażenia określonego w konfiguracji wskaźników |
Asynchroniczne typy wywołań zwrotnych
Zarejestrowani odbiorcy (misc_status_callback i report_ready_callback) przekazują te typy do klienta, aby informować go o procesach działających w tle.
TelemetryServiceStatus
Struktura TelemetryServiceStatus służy jako argument dla zamknięcia misc_status_callback funkcji init, która jest rejestrowana podczas inicjowania usługi. Dostarcza asynchroniczne aktualizacje dotyczące stanu usługi i problemów z jej działaniem, np. odłączenia od źródła danych.
| Pola | |
|---|---|
id
|
usize: unikalny identyfikator zdarzenia stanu. |
code
|
TelemetryServiceStatusCodes: kod stanu określający kategorię zdarzenia. |
message
|
String: opis stanu zrozumiały dla człowieka. |
details
|
Option<StatusDetails>: opcjonalne uporządkowane dane, które dostarczają dodatkowego kontekstu dotyczącego stanu;
|
StatusDetails
Ten wyliczenie zawiera konkretne konteksty błędów. Jeśli w TelemetryServiceStatus występuje details, jest to jedna z tych wersji:
| Warianty | |
|---|---|
AggregationPublisherErrorDetails
|
Podczas agregowania danych wystąpił błąd |
ServicePublisherErrorDetails
|
Podczas próby połączenia z usługą wystąpił błąd |
ConditionalTriggerErrorDetails
|
Podczas obliczania wyrażenia wyzwalacza warunkowego wystąpił błąd |
MetricsReportGeneratorErrorDetails
|
Podczas generowania raportu o danych wystąpił błąd |
ServiceErrorDetails
|
Podczas odbierania nowej wiadomości z usługi wystąpił błąd |
FileIOErrorDetails
|
Wystąpił błąd wejścia/wyjścia pliku |
Każdy wariant wyliczenia zawiera dodatkowe pola, które dostarczają jeszcze więcej kontekstu.
ReportInfo
Struktura ReportInfo służy jako argument dla zamknięcia report_ready_callbackinit, które jest rejestrowane podczas inicjowania usługi.
Zawiera identyfikatory opisujące raport danych:
| Pola | |
|---|---|
config_uuid
|
String: identyfikator UUID konfiguracji danych, która wygenerowała raport. |
report_uuid
|
String: UUID raportu o danych, który jest gotowy do pobrania. |
Pole report_uuid jest jedynym polem niezbędnym do dalszego pobierania samego raportu o metrykach (patrz get_metrics_report), a pole config_uuid służy tylko jako dodatkowa informacja o jego źródle.