مرجع API کتابخانه کلاینت Rust برای سنجش از راه دور

این صفحه انواع، روش‌ها و نحوه‌ی مدیریت خطا در کتابخانه‌ی libsdv_telemetry_rust_wrapper را شرح می‌دهد.

رابط TelemetryServiceHolder

رابط اصلی برای کلاینت‌ها، ساختار TelemetryServiceHolder است. این رابط، مجموعه کاملی از متدها را برای مدیریت اتصال سرویس، پیکربندی معیارها و گزارش‌های داده ارائه می‌دهد.

مدیریت چرخه حیات خدمات

این روش‌ها اتصال با سرویس Telemetry مربوطه را برقرار و قطع می‌کنند.

دریافت

pub fn get() -> TelemetryResult<TelemetryServiceHolder>

یک متد استاتیک که یک هندل thread-safe را برای سرویس Telemetry بازیابی می‌کند. این یک فراخوانی مسدودکننده است که تا آماده شدن سرویس telemetry binder منتظر می‌ماند. سرویس Telemetry فقط از یک نمونه TelemetryServiceHolder پشتیبانی می‌کند. فراخوانی بیش از یک بار این متد باعث رفتار نامشخص یا غیرمنتظره می‌شود.

TelemetryServiceHolder ویژگی‌های Send و Sync را پیاده‌سازی می‌کند، به این معنی که می‌توان آن را با خیال راحت بین نخ‌ها به اشتراک گذاشت، برای مثال، با قرار دادن آن در یک نمونه از Arc . اکثر متدهای TelemetryServiceHolder async هستند و می‌توانند به صورت همزمان استفاده شوند.

بازگشت‌ها
TelemetryResult < TelemetryServiceHolder > نتیجه‌ای حاوی شناسه سرویس، یا نمونه‌ای از TelemetryError در صورت عدم دسترسی به سرویس

اولیه

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 : یک closure که به‌روزرسانی‌های وضعیت و خطا را از سرویس Telemetry دریافت و پردازش می‌کند.
report_ready_callback impl Fn( ReportInfo ) + Send + Sync + 'static : یک closure که وقتی یک گزارش معیار جدید برای بازیابی آماده است، اعلان‌ها را دریافت و پردازش می‌کند.
بازگشت‌ها
TelemetryResult <()> یک نتیجه خالی در صورت موفقیت، یا یک نمونه TelemetryError در صورت شکست

پایان

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

Gracefully اتصال سرویس را قطع می‌کند، listenerهای ثبت‌شده را پاک می‌کند و منابع مرتبط را پاکسازی می‌کند. این متد را یک بار هنگام خاتمه برنامه فراخوانی کنید.

بازگشت‌ها
TelemetryResult <()> یک نتیجه خالی در صورت موفقیت، یا یک نمونه TelemetryError در صورت شکست

مدیریت پیکربندی معیارها

این متدهای ناهمزمان، تعریف و وضعیت پیکربندی‌های جمع‌آوری داده‌ها را مدیریت می‌کنند.

سرویس تله‌متری پیکربندی‌ها را در دو حالت حفظ می‌کند:

  • غیرفعال: پیکربندی اعتبارسنجی و روی دیسک ذخیره می‌شود اما برای جمع‌آوری داده‌ها استفاده نمی‌شود.
  • فعال: پیکربندی داده‌ها را جمع‌آوری می‌کند و اجزای آن (مثلاً تریگرها، ناشران) فعال هستند.

برای اطمینان از اینکه پیکربندی‌ها در طول راه‌اندازی مجدد سرویس و راه‌اندازی مجدد دستگاه باقی می‌مانند، این سرویس آنها را روی دیسک دستگاه ذخیره می‌کند. این سرویس تمام پیکربندی‌ها را در دو دایرکتوری مبتنی بر وضعیت ذخیره می‌کند و آنها را در هنگام بوت اعتبارسنجی و در صورت لزوم فعال می‌کند.

پیکربندی_معیارهای_افزودنی

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

یک پیکربندی جدید برای معیارها به سرویس اضافه می‌کند. این پیکربندی باید به صورت یک آرایه بایتی سریالی شده ارائه شود. پیکربندی اضافه شده به طور پیش‌فرض غیرفعال است.

پارامترها
serialized_config &[u8] : یک برش بایتی حاوی داده‌های پیکربندی سریال‌سازی‌شده توسط protobuf
بازگشت‌ها
TelemetryResult <String> نتیجه‌ای که در صورت موفقیت شامل UUID پیکربندی تازه اضافه شده یا در صورت شکست شامل نمونه‌ای TelemetryError باشد.

پیکربندی_متریک_فعال‌سازی

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

پیکربندی معیارهای قبلاً اضافه شده (یا غیرفعال شده) را فعال می‌کند و جمع‌آوری داده‌ها و گزارش‌دهی آن را آغاز می‌کند.

پارامترها
config_uuid &str : شناسه کاربری (UUID) پیکربندی که باید فعال شود
بازگشت‌ها
TelemetryResult <String> نتیجه‌ای که در صورت موفقیت شامل UUID پیکربندی فعال‌شده یا در صورت شکست شامل نمونه‌ای از TelemetryError باشد.

غیرفعال کردن_متریک_پیکربندی

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

جمع‌آوری داده‌ها و گزارش‌دهی برای پیکربندی معیارهای فعال را متوقف می‌کند. پیکربندی در سرویس باقی می‌ماند و می‌تواند بعداً دوباره فعال شود.

پارامترها
config_uuid &str : شناسه کاربری (UUID) پیکربندی که قرار است غیرفعال شود
بازگشت‌ها
TelemetryResult <String> نتیجه‌ای که در صورت موفقیت، حاوی UUID پیکربندی غیرفعال شده یا در صورت شکست، حاوی نمونه‌ای از TelemetryError باشد.

حذف_متریک_پیکربندی

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

پیکربندی معیارها را برای همیشه حذف می‌کند. اگر پیکربندی فعال باشد، سرویس ابتدا آن را غیرفعال می‌کند.

پارامترها
config_uuid &str : شناسه کاربری (UUID) پیکربندی که باید حذف شود
بازگشت‌ها
TelemetryResult <String> نتیجه‌ای که در صورت موفقیت شامل UUID پیکربندی حذف شده یا در صورت شکست شامل نمونه‌ای از TelemetryError باشد.

حذف همه پیکربندی‌های متریک

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 در صورت شکست

مدیریت و بازیابی گزارش معیارها

این متدها به شما امکان می‌دهند گزارش‌های موجود را جستجو کرده و داده‌های گزارش جمع‌آوری‌شده را بازیابی کنید.

دریافت_معیارها_گزارش

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> نتیجه‌ای که در صورت موفقیت شامل شیء deserialized MetricsReport protobuf یا در صورت شکست شامل نمونه‌ای TelemetryError باشد.

دریافت_آماده_گزارش_اطلاعات

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

از سرویس Telemetry لیستی از تمام گزارش‌های تکمیل‌شده و آماده برای بازیابی را درخواست می‌کند. این برای بررسی وضعیت گزارش‌ها در صورت از دست رفتن اعلان فراخوانی مجدد (مثلاً اگر report_ready_callback با تأخیر ثبت شده باشد) مفید است.

بازگشت‌ها
TelemetryResult <Vec< ReportInfo >> نتیجه‌ای که در صورت موفقیت شامل برداری از اشیاء ReportInfo یا در صورت شکست شامل نمونه‌ای TelemetryError باشد

انواع اصلی، فراخوانی‌های برگشتی و مدیریت خطا

libsdv_telemetry_rust_wrapper از مجموعه‌ای از انواع سفارشی برای تعامل با سرویس Telemetry، مدیریت فراخوانی‌های ناهمزمان و مدیریت خطاهای سرویس استفاده می‌کند.

پاسخ API و انواع خطا

این نوع‌ها مستقیماً توسط متدهای کتابخانه‌ای برگردانده می‌شوند تا موفقیت یا شکست فوری عملیات درخواستی را نشان دهند.

نتیجه تله‌متری

اکثر متدها یک TelemetryResult<T> برمی‌گردانند که یک نام مستعار برای نوع استاندارد Result است و برای خطاهای سطح سرویس تخصصی شده است:

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

خطای تله‌متری

ساختار TelemetryError تمام خطاها را کپسوله‌سازی می‌کند و اطلاعات خطای دقیق و مختص سرویس را ارائه می‌دهد:

فیلدها
status TelemetryServiceStatusCodes : یک کد خطای قابل شمارش
message String : یک پیام توصیفی که جزئیات خطا را شرح می‌دهد

کدهای وضعیت سرویس تله‌متری

یک شمارش عددی که نتیجه فراخوانی‌های 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 به عنوان آرگومانی برای تابع بسته‌ی misc_status_callback از init عمل می‌کند که در طول مقداردهی اولیه‌ی سرویس ثبت می‌شود. این ساختار به‌روزرسانی‌های ناهمزمان در مورد سلامت سرویس و مشکلات زمان اجرا، به عنوان مثال، قطع ارتباط از منبع داده، ارائه می‌دهد.

فیلدها
id usize : یک شناسه منحصر به فرد برای رویداد وضعیت
code TelemetryServiceStatusCodes : کد وضعیتی که رویداد را دسته‌بندی می‌کند
message String : توضیحی خوانا برای انسان از وضعیت
details Option< StatusDetails > : داده‌های ساختاریافته اختیاری که زمینه بیشتری در مورد وضعیت ارائه می‌دهند

جزئیات وضعیت

این enum زمینه‌های خطای خاص را در بر می‌گیرد. اگر details در TelemetryServiceStatus وجود داشته باشد، یکی از انواع زیر است:

انواع
AggregationPublisherErrorDetails هنگام تجمیع داده‌ها خطایی رخ داد
ServicePublisherErrorDetails هنگام تلاش برای اتصال به یک سرویس، خطایی روی داد
ConditionalTriggerErrorDetails هنگام ارزیابی عبارت یک تریگر شرطی، خطایی روی داد.
MetricsReportGeneratorErrorDetails هنگام ایجاد گزارش معیارها خطایی روی داد.
ServiceErrorDetails هنگام دریافت پیام جدید از یک سرویس، خطایی روی داد.
FileIOErrorDetails خطای ورودی/خروجی فایل رخ داده است

هر نوع enum شامل فیلدهای اضافی است که زمینه بیشتری را فراهم می‌کند.

گزارش اطلاعات

ساختار ReportInfo به عنوان آرگومانی برای بسته شدن report_ready_callback از init عمل می‌کند که در طول مقداردهی اولیه سرویس ثبت می‌شود. این ساختار شامل شناسه‌هایی است که یک گزارش معیارها را توصیف می‌کنند:

فیلدها
config_uuid String : UUID پیکربندی معیارها که گزارش را تولید کرده است
report_uuid String : شناسه کاربری (UUID) گزارش معیارها که آماده بازیابی است

فیلد report_uuid تنها فیلد ضروری برای بازیابی بیشتر خود گزارش معیارها است (به get_metrics_report مراجعه کنید)، در حالی که config_uuid فقط به عنوان اطلاعات اضافی در مورد منبع آن عمل می‌کند.