Referensi API library klien telemetri Rust

Halaman ini menjelaskan jenis, metode, dan penanganan error di library libsdv_telemetry_rust_wrapper.

Antarmuka TelemetryServiceHolder

Antarmuka utama untuk klien adalah struktur TelemetryServiceHolder. Antarmuka ini menyediakan serangkaian lengkap metode untuk mengelola koneksi layanan, konfigurasi metrik, dan laporan data.

Pengelolaan siklus proses layanan

Metode ini membuat dan menghentikan koneksi dengan layanan Telemetri yang mendasarinya.

get

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

Metode statis yang mengambil handle yang aman untuk thread ke layanan Telemetry. Ini adalah panggilan pemblokiran yang menunggu hingga layanan binder telemetri siap. Layanan Telemetry hanya mendukung satu instance TelemetryServiceHolder. Memanggil metode ini lebih dari sekali akan menyebabkan perilaku yang tidak terdefinisi atau tidak terduga.

TelemetryServiceHolder mengimplementasikan trait Send dan Sync, yang berarti dapat dibagikan dengan aman di seluruh thread, misalnya, dengan membungkusnya dalam instance Arc. Sebagian besar metode TelemetryServiceHolder bersifat async dan dapat digunakan secara bersamaan.

Hasil
TelemetryResult<TelemetryServiceHolder> Hasil yang berisi handle layanan, atau instance TelemetryError jika layanan tidak dapat diperoleh

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

Menginisialisasi layanan dengan mendaftarkan callback asinkron. Panggil metode ini sekali setelah mendapatkan TelemetryServiceHolder dan sebelum interaksi lainnya.

Parameter
misc_status_callback impl Fn(TelemetryServiceStatus) + Send + Sync + 'static: Penutupan yang menerima dan memproses update status dan error dari layanan Telemetri
report_ready_callback impl Fn(ReportInfo) + Send + Sync + 'static: Penutupan yang menerima dan memproses notifikasi saat laporan metrik baru siap diambil
Hasil
TelemetryResult<()> Hasil kosong jika berhasil, atau instance TelemetryError jika gagal

selesai

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

Menutup koneksi layanan dengan benar, menghapus pemroses yang terdaftar, dan membersihkan resource terkait. Panggil metode ini sekali saat aplikasi dihentikan.

Hasil
TelemetryResult<()> Hasil kosong jika berhasil, atau instance TelemetryError jika gagal

Pengelolaan konfigurasi metrik

Metode asinkron ini mengelola definisi dan status konfigurasi pengumpulan data.

Layanan Telemetri mempertahankan konfigurasi dalam dua status:

  • Tidak aktif: Konfigurasi divalidasi dan disimpan di disk, tetapi tidak digunakan untuk pengumpulan data.
  • Aktif: Konfigurasi mengumpulkan data, dan komponennya (pemicu, penayang, misalnya) aktif.

Untuk memastikan konfigurasi tetap ada saat layanan dimulai ulang dan perangkat di-reboot, layanan menyimpannya di disk perangkat. Layanan menyimpan semua konfigurasi dalam dua direktori berbasis status, memvalidasi dan, jika perlu, mengaktifkannya saat booting.

add_metrics_config

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

Menambahkan konfigurasi metrik baru ke layanan. Konfigurasi harus diberikan sebagai array byte yang diserialisasi. Konfigurasi yang ditambahkan tidak aktif secara default.

Parameter
serialized_config &[u8]: Slice byte yang berisi data konfigurasi yang diserialisasi protobuf
Hasil
TelemetryResult<String> Hasil yang berisi UUID konfigurasi yang baru ditambahkan jika berhasil, atau instance TelemetryError jika gagal

activate_metrics_config

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

Mengaktifkan konfigurasi metrik yang sebelumnya ditambahkan (atau dinonaktifkan), memulai pengumpulan dan pelaporan datanya.

Parameter
config_uuid &str: UUID konfigurasi yang akan diaktifkan
Hasil
TelemetryResult<String> Hasil yang berisi UUID konfigurasi yang diaktifkan jika berhasil, atau instance TelemetryError jika gagal

deactivate_metrics_config

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

Menghentikan pengumpulan dan pelaporan data untuk konfigurasi metrik yang aktif. Konfigurasi tetap ada di layanan dan dapat diaktifkan kembali nanti.

Parameter
config_uuid &str: UUID konfigurasi yang akan dinonaktifkan
Hasil
TelemetryResult<String> Hasil yang berisi UUID konfigurasi yang dinonaktifkan jika berhasil, atau instance TelemetryError jika gagal

remove_metrics_config

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

Menghapus konfigurasi metrik secara permanen. Jika konfigurasi aktif, layanan akan menonaktifkannya terlebih dahulu.

Parameter
config_uuid &str: UUID konfigurasi yang akan dihapus
Hasil
TelemetryResult<String> Hasil yang berisi UUID konfigurasi yang dihapus jika berhasil, atau instance TelemetryError jika gagal

remove_all_metrics_configs

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

Menghapus semua konfigurasi metrik yang ada, menonaktifkan konfigurasi yang aktif.

Hasil
TelemetryResult<String> Hasil yang berisi string pesan status saat berhasil, atau instance TelemetryError saat gagal

get_active_metrics_config_uuids

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

Mengirimkan kueri ke layanan untuk mendapatkan daftar UUID semua konfigurasi dalam status aktif.

Hasil
TelemetryResult<Vec<String>> Hasil yang berisi vektor string UUID untuk konfigurasi metrik aktif jika berhasil, atau instance TelemetryError jika gagal

get_inactive_metrics_config_uuids

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

Mengirim kueri ke layanan untuk mendapatkan daftar UUID semua konfigurasi dalam status tidak aktif.

Hasil
TelemetryResult<Vec<String>> Hasil yang berisi vektor string UUID untuk konfigurasi metrik tidak aktif jika berhasil, atau instance TelemetryError jika gagal

Penanganan dan pengambilan laporan metrik

Dengan metode ini, Anda dapat membuat kueri untuk laporan yang tersedia dan mengambil data laporan yang dikumpulkan.

get_metrics_report

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

Mengambil data laporan metrik lengkap untuk UUID laporan tertentu. Anda dapat memperoleh UUID laporan dari notifikasi menggunakan report_ready_callback atau dengan memanggil get_ready_reports_info.

Parameter
report_uuid &str: UUID laporan tertentu yang akan diambil
Hasil
TelemetryResult<MetricsReport> Hasil yang berisi objek protobuf MetricsReport yang telah dideserialisasi jika berhasil, atau instance TelemetryError jika gagal

get_ready_reports_info

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

Mengirimkan kueri ke layanan Telemetri untuk mendapatkan daftar semua laporan yang telah selesai dan siap diambil. Hal ini berguna untuk memeriksa status laporan jika notifikasi panggilan balik terlewat (misalnya, jika report_ready_callback didaftarkan terlambat).

Hasil
TelemetryResult<Vec<ReportInfo>> Hasil yang berisi vektor objek ReportInfo saat berhasil, atau instance TelemetryError saat gagal

Jenis inti, callback, dan penanganan error

libsdv_telemetry_rust_wrapper menggunakan serangkaian jenis kustom untuk berinteraksi dengan layanan Telemetri, mengelola callback asinkron, dan menangani error layanan.

Jenis respons dan error API

Jenis ini ditampilkan langsung oleh metode library untuk menunjukkan keberhasilan atau kegagalan langsung dari operasi yang diminta.

TelemetryResult

Sebagian besar metode menampilkan TelemetryResult<T>, yang merupakan alias untuk jenis Result standar, yang dikhususkan untuk error tingkat layanan:

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

TelemetryError

Struktur TelemetryError merangkum semua kegagalan dan memberikan informasi error spesifik per layanan yang mendetail:

Kolom
status TelemetryServiceStatusCodes: Kode error yang dapat di-enum
message String: Pesan deskriptif yang menjelaskan error

TelemetryServiceStatusCodes

Enumerasi numerik yang merepresentasikan hasil panggilan API dan status layanan internal. Kode ini digunakan di TelemetryError dan TelemetryServiceStatus. Contoh:

Kode
200 TELEMETRY_SERVICE_API_CALL_SUCCESS Berhasil
402 METRICS_CONFIG_PARSE_ERROR Gagal mengurai konfigurasi metrik
407 REMOVE_METRICS_CONFIG_FAILED Gagal menghapus konfigurasi metrik
417 METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR Gagal mengevaluasi ekspresi yang ditentukan dalam konfigurasi metrik

Jenis callback asinkron

Pemroses yang terdaftar (misc_status_callback dan report_ready_callback) meneruskan jenis ini ke klien untuk memberikan update pada proses latar belakang.

TelemetryServiceStatus

Struktur TelemetryServiceStatus berfungsi sebagai argumen untuk penutupan misc_status_callback dari init, yang didaftarkan selama inisialisasi layanan. Struktur ini memberikan update asinkron tentang kesehatan dan masalah runtime layanan, misalnya, terputusnya koneksi dari sumber data.

Kolom
id usize: ID unik untuk peristiwa status
code TelemetryServiceStatusCodes: Kode status yang mengategorikan peristiwa
message String: Deskripsi status yang dapat dibaca manusia
details Option<StatusDetails>: Data terstruktur opsional yang memberikan konteks tambahan tentang status

StatusDetails

Enum ini membungkus konteks error tertentu. Jika details ada di TelemetryServiceStatus, itu adalah salah satu varian berikut:

Varian
AggregationPublisherErrorDetails Terjadi error saat menggabungkan data
ServicePublisherErrorDetails Terjadi error saat mencoba terhubung ke layanan
ConditionalTriggerErrorDetails Terjadi error saat mengevaluasi ekspresi pemicu bersyarat
MetricsReportGeneratorErrorDetails Terjadi error saat membuat laporan metrik
ServiceErrorDetails Terjadi error saat menerima pesan baru dari layanan
FileIOErrorDetails Terjadi error I/O file

Setiap varian enum berisi kolom tambahan yang memberikan lebih banyak konteks.

ReportInfo

Struktur ReportInfo berfungsi sebagai argumen untuk penutupan report_ready_callback init, yang didaftarkan selama inisialisasi layanan. Struktur ini berisi ID yang menjelaskan laporan metrik:

Kolom
config_uuid String: UUID konfigurasi metrik yang membuat laporan
report_uuid String: UUID laporan metrik yang siap diambil

Kolom report_uuid adalah satu-satunya yang diperlukan untuk pengambilan laporan metrik lebih lanjut (lihat get_metrics_report), sementara config_uuid hanya berfungsi sebagai informasi tambahan tentang sumbernya.