API-Referenz zur Telemetrie-Clientbibliothek für Rust

Auf dieser Seite werden die Typen, Methoden und die Fehlerbehandlung in der libsdv_telemetry_rust_wrapper-Bibliothek beschrieben.

Schnittstelle TelemetryServiceHolder

Die primäre Schnittstelle für Clients ist die TelemetryServiceHolder-Struktur. Diese Schnittstelle bietet alle Methoden zum Verwalten der Dienstverbindung, der Messwertkonfigurationen und der Datenberichte.

Verwaltung des Dienstlebenszyklus

Mit diesen Methoden wird die Verbindung zum zugrunde liegenden Telemetriedienst hergestellt und beendet.

get

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

Eine statische Methode, die ein threadsicheres Handle für den Telemetriedienst abruft. Dies ist ein blockierender Aufruf, der wartet, bis der Telemetrie-Binder-Dienst bereit ist. Der Telemetriedienst unterstützt nur eine Instanz von TelemetryServiceHolder. Wenn Sie diese Methode mehrmals aufrufen, kann dies zu undefiniertem oder unerwartetem Verhalten führen.

TelemetryServiceHolder implementiert die Traits Send und Sync. Das bedeutet, dass sie sicher über Threads hinweg geteilt werden kann, z. B. durch Wrapping in einer Instanz von Arc. Die meisten Methoden von TelemetryServiceHolder sind async und können gleichzeitig verwendet werden.

Gibt Folgendes zurück:
TelemetryResult<TelemetryServiceHolder> Ein Ergebnis mit dem Service-Handle oder der TelemetryError-Instanz, wenn der Dienst nicht abgerufen werden kann.

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

Initialisiert den Dienst durch Registrieren asynchroner Callbacks. Rufen Sie diese Methode einmal auf, nachdem Sie die TelemetryServiceHolder erhalten haben und bevor Sie andere Interaktionen ausführen.

Parameter
misc_status_callback impl Fn(TelemetryServiceStatus) + Send + Sync + 'static: Ein Closure, das Status- und Fehleraktualisierungen vom Telemetriedienst empfängt und verarbeitet.
report_ready_callback impl Fn(ReportInfo) + Send + Sync + 'static: Ein Closure, das Benachrichtigungen empfängt und verarbeitet, wenn ein neuer Messwertbericht zum Abrufen bereit ist.
Gibt Folgendes zurück:
TelemetryResult<()> Bei Erfolg ein leeres Ergebnis oder bei einem Fehler eine TelemetryError-Instanz

Abschließen

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

Fährt die Dienstverbindung ordnungsgemäß herunter, löscht registrierte Listener und bereinigt zugehörige Ressourcen. Rufen Sie diese Methode einmal auf, wenn die App beendet wird.

Gibt Folgendes zurück:
TelemetryResult<()> Bei Erfolg ein leeres Ergebnis oder bei einem Fehler eine TelemetryError-Instanz

Verwaltung von Messwertkonfigurationen

Mit diesen asynchronen Methoden werden die Definition und der Status von Konfigurationen für die Datenerhebung verwaltet.

Der Telemetriedienst verwaltet Konfigurationen in zwei Status:

  • Inaktiv:Die Konfiguration wird validiert und auf der Festplatte gespeichert, aber nicht für die Datenerhebung verwendet.
  • Aktiv:Mit der Konfiguration werden Daten erhoben und die zugehörigen Komponenten (z. B. Trigger und Publisher) sind aktiv.

Damit Konfigurationen bei Dienstneustarts und Geräteneustarts beibehalten werden, speichert der Dienst sie auf der Festplatte des Geräts. Der Dienst speichert alle Konfigurationen in zwei statusbasierten Verzeichnissen, validiert sie und aktiviert sie bei Bedarf beim Starten des Geräts.

add_metrics_config

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

Fügt dem Dienst eine neue Messwertkonfiguration hinzu. Die Konfiguration muss als serialisiertes Byte-Array angegeben werden. Die hinzugefügte Konfiguration ist standardmäßig inaktiv.

Parameter
serialized_config &[u8]: Ein Byte-Slice mit den protobuf-serialisierten Konfigurationsdaten
Gibt Folgendes zurück:
TelemetryResult<String> Ein Ergebnis mit der UUID der neu hinzugefügten Konfiguration bei Erfolg oder eine TelemetryError-Instanz bei Fehler

activate_metrics_config

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

Aktiviert eine zuvor hinzugefügte (oder deaktivierte) Messwertkonfiguration und startet die Datenerhebung und Berichterstellung.

Parameter
config_uuid &str: Die UUID der zu aktivierenden Konfiguration
Gibt Folgendes zurück:
TelemetryResult<String> Ein Ergebnis, das bei Erfolg die UUID der aktivierten Konfiguration enthält, oder bei Fehler die TelemetryError-Instanz.

deactivate_metrics_config

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

Die Datenerhebung und Berichterstellung für eine aktive Messwertkonfiguration werden beendet. Die Konfiguration bleibt im Dienst erhalten und kann später reaktiviert werden.

Parameter
config_uuid &str: Die UUID der zu deaktivierenden Konfiguration
Gibt Folgendes zurück:
TelemetryResult<String> Ein Ergebnis, das bei Erfolg die UUID der deaktivierten Konfiguration enthält, oder bei einem Fehler eine TelemetryError-Instanz

remove_metrics_config

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

Entfernt eine Messwertkonfiguration dauerhaft. Wenn die Konfiguration aktiv ist, wird sie vom Dienst zuerst deaktiviert.

Parameter
config_uuid &str: Die UUID der Konfiguration, die entfernt werden soll.
Gibt Folgendes zurück:
TelemetryResult<String> Ein Ergebnis, das bei Erfolg die UUID der entfernten Konfiguration enthält, oder bei Fehler eine TelemetryError-Instanz

remove_all_metrics_configs

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

Entfernt alle vorhandenen Messwertkonfigurationen und deaktiviert alle aktiven.

Gibt Folgendes zurück:
TelemetryResult<String> Ein Ergebnis, das bei Erfolg einen Statusmeldungsstring und bei Fehler eine TelemetryError-Instanz enthält.

get_active_metrics_config_uuids

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

Fragt den Dienst nach einer Liste von UUIDs für alle Konfigurationen im aktiven Status ab.

Gibt Folgendes zurück:
TelemetryResult<Vec<String>> Ein Ergebnis mit einem Vektor von UUID-Strings für aktive Messkonfigurationen bei Erfolg oder eine TelemetryError-Instanz bei Fehler

get_inactive_metrics_config_uuids

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

Fragt den Dienst nach einer Liste von UUIDs für alle Konfigurationen im inaktiven Status ab.

Gibt Folgendes zurück:
TelemetryResult<Vec<String>> Ein Ergebnis, das bei Erfolg einen Vektor von UUID-Strings für inaktive Messwertkonfigurationen enthält, oder bei einem Fehler eine TelemetryError-Instanz

Messwertberichte verarbeiten und abrufen

Mit diesen Methoden können Sie verfügbare Berichte abfragen und die erhobenen Berichtsdaten abrufen.

get_metrics_report

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

Ruft die vollständigen Messwertberichtsdaten für eine bestimmte Berichts-UUID ab. Sie können die UUID des Berichts aus einer Benachrichtigung abrufen, indem Sie report_ready_callback verwenden oder get_ready_reports_info aufrufen.

Parameter
report_uuid &str: Die UUID des abzurufenden Berichts
Gibt Folgendes zurück:
TelemetryResult<MetricsReport> Ein Ergebnis, das bei Erfolg das deserialisierte MetricsReport-Protobuf-Objekt und bei Fehler eine TelemetryError-Instanz enthält.

get_ready_reports_info

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

Fragt den Telemetriedienst nach einer Liste aller Berichte ab, die abgeschlossen und zum Abrufen bereit sind. Das ist nützlich, um den Status von Berichten zu prüfen, wenn eine Callback-Benachrichtigung verpasst wurde (z. B. wenn report_ready_callback zu spät registriert wurde).

Gibt Folgendes zurück:
TelemetryResult<Vec<ReportInfo>> Ein Ergebnis, das bei Erfolg einen Vektor von ReportInfo-Objekten enthält, oder bei einem Fehler eine TelemetryError-Instanz

Kerntypen, Rückrufe und Fehlerbehandlung

Die libsdv_telemetry_rust_wrapper verwendet eine Reihe benutzerdefinierter Typen, um mit dem Telemetriedienst zu interagieren, asynchrone Callbacks zu verwalten und Dienstfehler zu verarbeiten.

API-Antwort- und Fehlertypen

Diese Typen werden direkt von Bibliotheksmethoden zurückgegeben, um den unmittelbaren Erfolg oder Misserfolg des angeforderten Vorgangs anzugeben.

TelemetryResult

Die meisten Methoden geben ein TelemetryResult<T> zurück, das ein Alias für den Standardtyp Result ist und für Fehler auf Dienstebene verwendet wird:

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

TelemetryError

Die TelemetryError-Struktur kapselt alle Fehler und enthält detaillierte, dienstspezifische Fehlerinformationen:

Felder
status TelemetryServiceStatusCodes: Ein aufzählbarer Fehlercode
message String: Eine beschreibende Meldung, in der der Fehler detailliert beschrieben wird.

TelemetryServiceStatusCodes

Eine numerische Aufzählung, die das Ergebnis von API-Aufrufen und internen Dienststatus darstellt. Diese Codes werden sowohl in TelemetryError als auch in TelemetryServiceStatus verwendet. Beispiel:

Codes
200 TELEMETRY_SERVICE_API_CALL_SUCCESS Erfolg
402 METRICS_CONFIG_PARSE_ERROR Fehler beim Parsen der Messwertkonfiguration
407 REMOVE_METRICS_CONFIG_FAILED Messwertkonfiguration konnte nicht entfernt werden
417 METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR Der in der Messwertkonfiguration angegebene Ausdruck konnte nicht ausgewertet werden.

Asynchrone Callback-Typen

Die registrierten Listener (misc_status_callback und report_ready_callback) übergeben diese Typen an den Client, um Updates zu Hintergrundprozessen bereitzustellen.

TelemetryServiceStatus

Die TelemetryServiceStatus-Struktur dient als Argument für den misc_status_callback-Closure von init, der während der Dienstinitialisierung registriert wird. Es bietet asynchrone Updates zum Zustand des Dienstes und zu Laufzeitproblemen, z. B. zur Trennung von einer Datenquelle.

Felder
id usize: Eine eindeutige Kennung für das Statusereignis.
code TelemetryServiceStatusCodes: Statuscode zur Kategorisierung des Ereignisses
message String: Eine menschenlesbare Beschreibung des Status
details Option<StatusDetails>: Optionale strukturierte Daten, die zusätzlichen Kontext zum Status liefern

StatusDetails

Diese Enumeration umfasst bestimmte Fehlerkontexte. Wenn details in TelemetryServiceStatus vorhanden ist, handelt es sich um eine der folgenden Varianten:

Varianten
AggregationPublisherErrorDetails Beim Aggregieren der Daten ist ein Fehler aufgetreten
ServicePublisherErrorDetails Beim Verbindungsaufbau zu einem Dienst ist ein Fehler aufgetreten
ConditionalTriggerErrorDetails Beim Auswerten des Ausdrucks eines bedingten Triggers ist ein Fehler aufgetreten
MetricsReportGeneratorErrorDetails Beim Generieren eines Berichts mit Messwerten ist ein Fehler aufgetreten
ServiceErrorDetails Beim Empfangen einer neuen Nachricht von einem Dienst ist ein Fehler aufgetreten
FileIOErrorDetails Ein Datei-I/O-Fehler ist aufgetreten

Jede Enum-Variante enthält zusätzliche Felder, die noch mehr Kontext liefern.

ReportInfo

Die ReportInfo-Struktur dient als Argument für den report_ready_callback-Closure von init, der bei der Dienstinitialisierung registriert wird. Sie enthält die Kennzeichnungen, die einen Messwertbericht beschreiben:

Felder
config_uuid String: Die UUID der Messwertkonfiguration, mit der der Bericht generiert wurde.
report_uuid String: Die UUID des Messwertberichts, der abgerufen werden kann

Das Feld report_uuid ist das einzige, das für den weiteren Abruf des Berichts mit den Messwerten erforderlich ist (siehe get_metrics_report). config_uuid dient nur als zusätzliche Information zur Quelle.