Rust telemetri istemci kitaplığı API referansı

Bu sayfada, libsdv_telemetry_rust_wrapper kitaplığındaki türler, yöntemler ve hata işleme açıklanmaktadır.

TelemetryServiceHolder arayüzü

İstemciler için birincil arayüz TelemetryServiceHolder yapısıdır. Bu arayüz, hizmet bağlantısını, metrik yapılandırmalarını ve veri raporlarını yönetmek için gereken tüm yöntemleri sağlar.

Hizmet yaşam döngüsü yönetimi

Bu yöntemler, temel Telemetri hizmetiyle bağlantı kurar ve bağlantıyı sonlandırır.

get

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

Telemetry hizmeti için iş parçacığı açısından güvenli bir tutma yerini alan statik bir yöntemdir. Bu, Telemetry bağlayıcı hizmeti hazır olana kadar bekleyen bir engelleme çağrısıdır. Telemetry hizmeti yalnızca TelemetryServiceHolder öğesinin tek bir örneğini destekler. Bu yöntemin birden fazla kez çağrılması, tanımlanmamış veya beklenmedik davranışlara neden olur.

TelemetryServiceHolder, Send ve Sync özelliklerini uygular. Bu nedenle, örneğin Arc örneğine sarmalanarak iş parçacıkları arasında güvenli bir şekilde paylaşılabilir. TelemetryServiceHolder yöntemlerinin çoğu async ve aynı anda kullanılabilir.

İadeler
TelemetryResult<TelemetryServiceHolder> Hizmet herkese açık kullanıcı adını içeren bir sonuç veya TelemetryError hizmet alınamıyorsa örnek

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

Eşzamansız geri çağırmaları kaydederek hizmeti başlatır. Bu yöntemi, TelemetryServiceHolder elde edildikten sonra ve diğer etkileşimlerden önce bir kez çağırın.

Parametreler
misc_status_callback impl Fn(TelemetryServiceStatus) + Send + Sync + 'static: Telemetri hizmetinden durum ve hata güncellemelerini alan ve işleyen bir kapatma
report_ready_callback impl Fn(ReportInfo) + Send + Sync + 'static: A closure that receives and processes notifications when a new metrics report is ready for retrieval
İadeler
TelemetryResult<()> Başarılı olduğunda boş sonuç, başarısız olduğunda ise TelemetryError örneği

tamamla

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

Hizmet bağlantısını düzgün bir şekilde kapatır, kayıtlı dinleyicileri temizler ve ilişkili kaynakları temizler. Uygulama sonlandırıldığında bu yöntemi bir kez çağırın.

İadeler
TelemetryResult<()> Başarılı olduğunda boş sonuç, başarısız olduğunda ise TelemetryError örneği

Metrik yapılandırma yönetimi

Bu eşzamansız yöntemler, veri toplama yapılandırmalarının tanımını ve durumunu yönetir.

Telemetri hizmeti, yapılandırmaları iki durumda tutar:

  • Etkin değil: Yapılandırma doğrulanır ve diske kaydedilir ancak veri toplama için kullanılmaz.
  • Etkin: Yapılandırma veri toplar ve bileşenleri (ör. tetikleyiciler, yayıncılar) etkindir.

Yapılandırmaların hizmet yeniden başlatıldığında ve cihaz yeniden başlatıldığında korunması için hizmet, bunları cihazın diskinde saklar. Hizmet, tüm yapılandırmaları iki duruma dayalı dizinde saklar, bunları doğrular ve gerekirse başlatma sırasında etkinleştirir.

add_metrics_config

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

Hizmete yeni bir metrik yapılandırması ekler. Yapılandırma, serileştirilmiş bir bayt dizisi olarak sağlanmalıdır. Eklenen yapılandırma varsayılan olarak etkin değildir.

Parametreler
serialized_config &[u8]: Protobuf ile serileştirilmiş yapılandırma verilerini içeren bir bayt dilimi
İadeler
TelemetryResult<String> Başarılı olursa yeni eklenen yapılandırmanın UUID'sini içeren bir sonuç, başarısız olursa TelemetryError örneği

activate_metrics_config

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

Daha önce eklenmiş (veya devre dışı bırakılmış) bir metrik yapılandırmasını etkinleştirerek veri toplama ve raporlama işlemlerini başlatır.

Parametreler
config_uuid &str: Etkinleştirilecek yapılandırmanın UUID'si
İadeler
TelemetryResult<String> Başarılı olursa etkinleştirilen yapılandırmanın UUID'sini içeren bir sonuç, başarısız olursa TelemetryError örneği

deactivate_metrics_config

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

Etkin bir metrik yapılandırması için veri toplamayı ve raporlamayı durdurur. Yapılandırma hizmette kalır ve daha sonra yeniden etkinleştirilebilir.

Parametreler
config_uuid &str: Devre dışı bırakılacak yapılandırmanın UUID'si
İadeler
TelemetryResult<String> Başarılı olursa devre dışı bırakılan yapılandırmanın UUID'sini içeren bir sonuç, başarısız olursa TelemetryError örneği

remove_metrics_config

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

Metrik yapılandırmasını kalıcı olarak kaldırır. Yapılandırma etkinse hizmet önce yapılandırmayı devre dışı bırakır.

Parametreler
config_uuid &str: Kaldırılacak yapılandırmanın UUID'si
İadeler
TelemetryResult<String> Başarılı olursa kaldırılan yapılandırmanın UUID'sini içeren bir sonuç, başarısız olursa TelemetryError örneği

remove_all_metrics_configs

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

Mevcut tüm metrik yapılandırmalarını kaldırır ve etkin olanları devre dışı bırakır.

İadeler
TelemetryResult<String> Başarı durumunda durum mesajı dizesi içeren bir sonuç veya başarısızlık durumunda TelemetryError örneği

get_active_metrics_config_uuids

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

Etkin durumdaki tüm yapılandırmaların UUID listesi için hizmete sorgu gönderir.

İadeler
TelemetryResult<Vec<String>> Başarı durumunda etkin metrik yapılandırmaları için UUID dizeleri vektörünü içeren bir sonuç, başarısızlık durumunda ise TelemetryError örneği

get_inactive_metrics_config_uuids

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

Hizmete, etkin olmayan durumdaki tüm yapılandırmaların UUID'lerinin listesini sorgular.

İadeler
TelemetryResult<Vec<String>> Başarı durumunda devre dışı metrik yapılandırmaları için UUID dizeleri vektörünü içeren bir sonuç, başarısızlık durumunda ise TelemetryError örneği

Metrik raporu işleme ve alma

Bu yöntemler, mevcut raporları sorgulamanıza ve toplanan rapor verilerini almanıza olanak tanır.

get_metrics_report

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

Belirli bir rapor UUID'si için tam metrik raporu verilerini alır. Rapor UUID'sini report_ready_callback simgesini kullanarak bildirimden veya get_ready_reports_info numaralı telefonu arayarak alabilirsiniz.

Parametreler
report_uuid &str: Alınacak raporun UUID'si
İadeler
TelemetryResult<MetricsReport> Başarılı olduğunda seri durumdan çıkarılmış MetricsReport protobuf nesnesini, başarısız olduğunda ise TelemetryError örneğini içeren bir sonuç

get_ready_reports_info

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

Tamamlanmış ve alınmaya hazır tüm raporların listesi için Telemetry hizmetine sorgu gönderir. Bu, bir geri çağırma bildirimi kaçırıldıysa (örneğin, report_ready_callback geç kaydedildiyse) raporların durumunu kontrol etmek için yararlıdır.

İadeler
TelemetryResult<Vec<ReportInfo>> Başarılı olduğunda ReportInfo nesnelerin vektörünü, başarısız olduğunda ise TelemetryError örneğini içeren bir sonuç

Temel türler, geri çağırmalar ve hata işleme

libsdv_telemetry_rust_wrapper, Telemetri hizmetiyle etkileşim kurmak, eşzamansız geri çağırmaları yönetmek ve hizmet hatalarını işlemek için bir dizi özel tür kullanır.

API yanıtı ve hata türleri

Bu türler, istenen işlemin hemen başarılı olup olmadığını veya başarısız olduğunu belirtmek için doğrudan kitaplık yöntemleriyle döndürülür.

TelemetryResult

Çoğu yöntem, hizmet düzeyindeki hatalar için özelleştirilmiş standart Result türünün diğer adı olan TelemetryResult<T> değerini döndürür:

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

TelemetryError

TelemetryError struct, tüm hataları kapsar ve ayrıntılı, hizmete özel hata bilgileri sağlar:

Alanlar
status TelemetryServiceStatusCodes: Numaralandırılabilir bir hata kodu
message String: Hatayı ayrıntılı olarak açıklayan bir mesaj

TelemetryServiceStatusCodes

API çağrılarının ve dahili hizmet durumlarının sonucunu temsil eden sayısal bir sıralama. Bu kodlar hem TelemetryError hem de TelemetryServiceStatus için kullanılır. Örneğin:

Kodlar
200 TELEMETRY_SERVICE_API_CALL_SUCCESS Başarılı
402 METRICS_CONFIG_PARSE_ERROR Metrik yapılandırması ayrıştırılamadı
407 REMOVE_METRICS_CONFIG_FAILED Metrik yapılandırması kaldırılamadı
417 METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR Metrik yapılandırmasında belirtilen ifade değerlendirilemedi

Asenkron geri çağırma türleri

Kayıtlı dinleyiciler (misc_status_callback ve report_ready_callback), arka plan süreçleriyle ilgili güncellemeler sağlamak için bu türleri istemciye iletir.

TelemetryServiceStatus

TelemetryServiceStatus yapısı, hizmet başlatma sırasında kaydedilen init misc_status_callback kapatması için bir bağımsız değişken görevi görür. Hizmetin durumu ve çalışma zamanı sorunları (ör. veri kaynağıyla bağlantının kesilmesi) hakkında eşzamansız güncellemeler sağlar.

Alanlar
id usize: Durum etkinliğinin benzersiz tanımlayıcısı
code TelemetryServiceStatusCodes: Etkinliği sınıflandıran durum kodu
message String: Durumun insan tarafından okunabilen açıklaması
details Option<StatusDetails>: Durumla ilgili ek bağlam sağlayan isteğe bağlı yapılandırılmış veriler

StatusDetails

Bu enum, belirli hata bağlamlarını sarmalar. TelemetryServiceStatus içinde details varsa aşağıdaki varyantlardan biri söz konusudur:

Varyantlar
AggregationPublisherErrorDetails Veriler toplanırken bir hata oluştu
ServicePublisherErrorDetails Bir hizmete bağlanmaya çalışılırken hata oluştu
ConditionalTriggerErrorDetails Koşullu bir tetikleyicinin ifadesi değerlendirilirken bir hata oluştu
MetricsReportGeneratorErrorDetails Metrik raporu oluşturulurken bir hata oluştu
ServiceErrorDetails Bir hizmetten yeni mesaj alınırken hata oluştu
FileIOErrorDetails Dosya G/Ç hatası oluştu

Her enum varyantı, daha da fazla bağlam sağlayan ek alanlar içerir.

ReportInfo

ReportInfo yapısı, hizmet başlatma sırasında kaydedilen init kapatma işleminin report_ready_callback bağımsız değişkeni olarak kullanılır. Bir metrik raporunu açıklayan tanımlayıcıları içerir:

Alanlar
config_uuid String: Raporu oluşturan metrik yapılandırmasının UUID'si
report_uuid String: Alınmaya hazır metrik raporunun UUID'si

report_uuid alanı, metrik raporunun kendisinin daha fazla alınması için tek gerekli alandır (bkz. get_metrics_report). config_uuid ise yalnızca kaynağıyla ilgili ek bilgi olarak kullanılır.