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.