בדף הזה מתוארים הסוגים, השיטות וטיפול בשגיאות בספריית libsdv_telemetry_rust_wrapper.
ממשק TelemetryServiceHolder
הממשק העיקרי ללקוחות הוא מבנה הנתונים TelemetryServiceHolder. הממשק הזה מספק את כל השיטות לניהול חיבור השירות, הגדרות המדדים ודוחות הנתונים.
ניהול מחזור החיים של שירות
ה-methods האלה יוצרות את החיבור לשירות הטלמטריה הבסיסי ומסיימות אותו.
get
pub fn get() -> TelemetryResult<TelemetryServiceHolder>
שיטה סטטית שמקבלת נקודת אחיזה בטוחה לשימוש בשרשור לשירות הטלמטריה.
זו קריאה חוסמת שממתינה עד ששירות ה-binder של הטלמטריה יהיה מוכן.
שירות הטלמטריה תומך רק במופע יחיד של התג TelemetryServiceHolder. הפעלת ה-method הזו יותר מפעם אחת גורמת להתנהגות לא מוגדרת או בלתי צפויה.
TelemetryServiceHolder מטמיע מאפיינים של Send ו-Sync, כלומר אפשר לשתף אותו בבטחה בין שרשורים, למשל על ידי עטיפתו במופע של Arc. רוב השיטות של TelemetryServiceHolder הן async ואפשר להשתמש בהן בו-זמנית.
| החזרות | |
|---|---|
TelemetryResult<TelemetryServiceHolder>
|
תוצאה שמכילה את ה-handle של השירות, או
מופע TelemetryError
אם אי אפשר לקבל את השירות
|
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<()>
השיטה מאתחלת את השירות על ידי רישום של קריאות חוזרות אסינכרוניות. צריך להפעיל את השיטה הזו פעם אחת אחרי שמקבלים את TelemetryServiceHolder ולפני כל אינטראקציה אחרת.
| פרמטרים | |
|---|---|
misc_status_callback
|
impl Fn(TelemetryServiceStatus) + Send + Sync +
'static: סגירה שמקבלת ומעבדת עדכוני סטטוס ושגיאות משירות הטלמטריה
|
report_ready_callback
|
impl Fn(ReportInfo) + Send + Sync + 'static: סגירה שמקבלת ומעבדת התראות כשדוח מדדים חדש מוכן לאחזור
|
| החזרות | |
|---|---|
TelemetryResult<()>
|
תוצאה ריקה אם הפעולה הצליחה, או
מופע של TelemetryError אם הפעולה נכשלה
|
סיום
pub fn finish(&self) -> TelemetryResult<()>
מכבה את חיבור השירות בצורה מסודרת, מנקה את המאזינים הרשומים ומנקה את המשאבים המשויכים. צריך להפעיל את ה-method הזו פעם אחת כשהאפליקציה מסיימת את הפעולה.
| החזרות | |
|---|---|
TelemetryResult<()>
|
תוצאה ריקה אם הפעולה הצליחה, או
מופע של TelemetryError אם הפעולה נכשלה
|
ניהול הגדרות של מדדים
השיטות האסינכרוניות האלה מנהלות את ההגדרה והמצב של הגדרות איסוף הנתונים.
שירות הטלמטריה שומר את ההגדרות בשני מצבים:
- לא פעיל: ההגדרה מאומתת ונשמרת בדיסק, אבל לא נעשה בה שימוש לאיסוף נתונים.
- פעילה: ההגדרה אוספת נתונים, והרכיבים שלה (טריגרים, פלטפורמות לפרסום, למשל) פעילים.
כדי לוודא שההגדרות יישמרו גם אחרי הפעלה מחדש של השירות או אתחול של המכשיר, השירות שומר אותן בדיסק של המכשיר. השירות מאחסן את כל ההגדרות בשתי ספריות מבוססות-מצב, מאמת אותן ואם צריך, מפעיל אותן בזמן האתחול.
add_metrics_config
pub async fn add_metrics_config(&self, serialized_config: &[u8]) -> TelemetryResult<String>
הפעולה מוסיפה הגדרת מדדים חדשה לשירות. ההגדרה צריכה להיות מסופקת כמערך בייטים שעבר סריאליזציה. ההגדרה שנוספה לא פעילה כברירת מחדל.
| פרמטרים | |
|---|---|
serialized_config
|
&[u8]: פרוסת בייטים שמכילה את נתוני התצורה שעברו סריאליזציה של protobuf
|
| החזרות | |
|---|---|
TelemetryResult<String>
|
תוצאה שמכילה את ה-UUID של ההגדרה החדשה שנוספה אם הפעולה הצליחה, או
TelemetryError אם הפעולה נכשלה
|
activate_metrics_config
pub async fn activate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
מפעיל הגדרת מדדים שנוספה (או הושבתה) בעבר, ומתחיל את איסוף הנתונים והדיווח שלה.
| פרמטרים | |
|---|---|
config_uuid
|
&str: המזהה הייחודי האוניברסלי (UUID) של ההגדרה להפעלה |
| החזרות | |
|---|---|
TelemetryResult<String>
|
תוצאה שמכילה את ה-UUID של ההגדרה שהופעלה אם הפעולה הצליחה, או את מופע TelemetryError אם הפעולה נכשלה
|
deactivate_metrics_config
pub async fn deactivate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
הפעולה הזו מפסיקה את איסוף הנתונים והדיווח לגבי הגדרות פעילות של מדדים. ההגדרה נשארת בשירות ואפשר להפעיל אותה מחדש בהמשך.
| פרמטרים | |
|---|---|
config_uuid
|
&str: המזהה הייחודי האוניברסלי (UUID) של ההגדרה שרוצים להשבית |
| החזרות | |
|---|---|
TelemetryResult<String>
|
תוצאה שמכילה את ה-UUID של ההגדרה שהושבתה במקרה של הצלחה, או את מופע TelemetryError במקרה של כישלון
|
remove_metrics_config
pub async fn remove_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
הפעולה הזו מסירה הגדרות של מדדים באופן סופי. אם ההגדרה פעילה, השירות משבית אותה קודם.
| פרמטרים | |
|---|---|
config_uuid
|
&str: המזהה הייחודי האוניברסלי (UUID) של ההגדרה להסרה |
| החזרות | |
|---|---|
TelemetryResult<String>
|
תוצאה שמכילה את ה-UUID של ההגדרה שהוסרה במקרה של הצלחה, או
מופע של TelemetryError במקרה של כשל
|
remove_all_metrics_configs
pub async fn remove_all_metrics_configs(&self) -> TelemetryResult<String>
מסיר את כל הגדרות המדדים הקיימות ומשבית את כל ההגדרות הפעילות.
| החזרות | |
|---|---|
TelemetryResult<String>
|
תוצאה שמכילה מחרוזת של הודעת סטטוס במקרה של הצלחה, או מופע של TelemetryError במקרה של כשל
|
get_active_metrics_config_uuids
pub async fn get_active_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
השאילתה שולחת לשירות רשימה של מזהים ייחודיים אוניברסליים (UUID) של כל ההגדרות במצב פעיל.
| החזרות | |
|---|---|
TelemetryResult<Vec<String>>
|
תוצאה שמכילה וקטור של מחרוזות UUID להגדרות פעילות של מדדים במקרה של הצלחה,
או מופע של TelemetryError במקרה של כשל
|
get_inactive_metrics_config_uuids
pub async fn get_inactive_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
השאילתה שולחת בקשה לשירות לקבלת רשימה של מזהים ייחודיים אוניברסליים (UUID) של כל ההגדרות במצב לא פעיל.
| החזרות | |
|---|---|
TelemetryResult<Vec<String>>
|
תוצאה שמכילה וקטור של מחרוזות UUID עבור הגדרות לא פעילות של מדדים במקרה של הצלחה,
או מופע TelemetryError במקרה של כשל
|
טיפול בדוחות מדדים ואחזור שלהם
השיטות האלה מאפשרות לשלוח שאילתות לגבי דוחות זמינים ולאחזר את נתוני הדוחות שנאספו.
get_metrics_report
pub async fn get_metrics_report(&self, report_uuid: &str) -> TelemetryResult<MetricsReport>
מאחזר את נתוני הדוח המלאים של מדדים עבור UUID של דוח ספציפי. אפשר לקבל את ה-UUID של הדוח מהתראה באמצעות report_ready_callback או באמצעות קריאה ל-get_ready_reports_info.
| פרמטרים | |
|---|---|
report_uuid
|
&str: ה-UUID של הדוח הספציפי שרוצים לאחזר |
| החזרות | |
|---|---|
TelemetryResult<MetricsReport>
|
תוצאה שמכילה את אובייקט ה-protobuf שבוצעה לו דה-סריאליזציה אם הפעולה הצליחה, או מופע של TelemetryError אם הפעולה נכשלהMetricsReport
|
get_ready_reports_info
pub async fn get_ready_reports_info(&self) -> TelemetryResult<Vec<ReportInfo>>
השאילתה שולחת בקשה לשירות הטלמטריה לקבלת רשימה של כל הדוחות שהושלמו ומוכנים לאחזור. האפשרות הזו שימושית לבדיקת הסטטוס של דוחות אם פספסתם התראה על קריאה חוזרת (לדוגמה, אם report_ready_callback נרשם באיחור).
| החזרות | |
|---|---|
TelemetryResult<Vec<ReportInfo>>
|
תוצאה שמכילה וקטור של ReportInfo אובייקטים במקרה של הצלחה, או מופע של TelemetryError במקרה של כשל
|
סוגים מרכזיים, קריאות חוזרות וטיפול בשגיאות
הספרייה libsdv_telemetry_rust_wrapper משתמשת בקבוצה של סוגים מותאמים אישית כדי ליצור אינטראקציה עם שירות הטלמטריה, לנהל קריאות חוזרות אסינכרוניות ולטפל בשגיאות בשירות.
תגובות API וסוגי שגיאות
הסוגים האלה מוחזרים ישירות על ידי שיטות בספרייה כדי לציין את ההצלחה או הכישלון המיידיים של הפעולה המבוקשת.
TelemetryResult
רוב השיטות מחזירות TelemetryResult<T>, שהוא כינוי לסוג הרגיל Result, שמתמחה בשגיאות ברמת השירות:
pub type TelemetryResult<T> = Result<T, TelemetryError>;
TelemetryError
המבנה TelemetryError מכיל את כל הכשלים ומספק מידע מפורט על שגיאות שספציפיות לשירות:
| שדות | |
|---|---|
status
|
TelemetryServiceStatusCodes: קוד שגיאה שניתן למנות
|
message
|
String: הודעה תיאורית שמפרטת את השגיאה |
TelemetryServiceStatusCodes
ספירה מספרית שמייצגת את התוצאה של קריאות ל-API ומצבים של שירות פנימי. הקודים האלה משמשים גם ב-TelemetryError וגם ב-TelemetryServiceStatus. לדוגמה:
| קודים | ||
|---|---|---|
200
|
TELEMETRY_SERVICE_API_CALL_SUCCESS
|
הצלחה |
402
|
METRICS_CONFIG_PARSE_ERROR
|
ניתוח ההגדרה של המדדים נכשל |
407
|
REMOVE_METRICS_CONFIG_FAILED
|
הסרת ההגדרה של המדדים נכשלה |
417
|
METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR
|
ההערכה של הביטוי שצוין בהגדרות המדדים נכשלה |
סוגים של קריאות חוזרות אסינכרוניות
המאזינים הרשומים (misc_status_callback ו-report_ready_callback)
מעבירים את הסוגים האלה ללקוח כדי לספק עדכונים על תהליכים שמתבצעים ברקע.
TelemetryServiceStatus
המבנה TelemetryServiceStatus משמש כארגומנט לסגירת misc_status_callback של init, שרשום במהלך אתחול השירות. הוא מספק עדכונים אסינכרוניים לגבי תקינות השירות ובעיות בזמן הריצה, למשל ניתוק ממקור נתונים.
| שדות | |
|---|---|
id
|
usize: מזהה ייחודי של אירוע הסטטוס |
code
|
TelemetryServiceStatusCodes: קוד סטטוס שמסווג את האירוע
|
message
|
String: תיאור של הסטטוס שקריא לאנשים |
details
|
Option<StatusDetails>: נתונים מובְנים אופציונליים שמספקים הקשר נוסף לגבי הסטטוס
|
פרטי הסטטוס
המספר הזה מייצג הקשרים ספציפיים של שגיאות. אם details מופיע ב-TelemetryServiceStatus, זה אחד מהערכים הבאים:
| וריאנטים | |
|---|---|
AggregationPublisherErrorDetails
|
אירעה שגיאה במהלך צבירת הנתונים |
ServicePublisherErrorDetails
|
אירעה שגיאה במהלך הניסיון להתחבר לשירות |
ConditionalTriggerErrorDetails
|
אירעה שגיאה בהערכת הביטוי של טריגר מותנה |
MetricsReportGeneratorErrorDetails
|
אירעה שגיאה במהלך יצירת דוח מדדים |
ServiceErrorDetails
|
אירעה שגיאה במהלך קבלת הודעה חדשה משירות |
FileIOErrorDetails
|
אירעה שגיאת קלט/פלט של קובץ |
כל וריאציה של enum מכילה שדות נוספים שמספקים עוד הקשר.
ReportInfo
המבנה ReportInfo משמש כארגומנט לסגירה report_ready_callback של init, שרשום במהלך אתחול השירות.
הוא מכיל את המזהים שמתארים דוח מדדים:
| שדות | |
|---|---|
config_uuid
|
String: ה-UUID של הגדרת המדדים שיצרה את הדוח |
report_uuid
|
String: ה-UUID של דוח המדדים שמוכן לאחזור |
השדה report_uuid הוא השדה היחיד שנדרש כדי לאחזר את דוח המדדים עצמו (ראו get_metrics_report), ואילו השדה config_uuid משמש רק כמידע נוסף על המקור שלו.