На этой странице описаны типы, методы и обработка ошибок в библиотеке libsdv_telemetry_rust_wrapper .
интерфейс TelemetryServiceHolder
Основным интерфейсом для клиентов является структура TelemetryServiceHolder . Этот интерфейс предоставляет полный набор методов для управления подключением к сервису, конфигурацией метрик и отчетами о данных.
Управление жизненным циклом сервиса
Эти методы устанавливают и разрывают соединение с базовой службой телеметрии.
получать
pub fn get() -> TelemetryResult<TelemetryServiceHolder>
Статический метод, получающий потокобезопасный дескриптор службы телеметрии. Это блокирующий вызов, который ожидает готовности службы привязки телеметрии. Служба телеметрии поддерживает только один экземпляр 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 : Замыкание, которое получает и обрабатывает обновления статуса и ошибок от службы телеметрии |
report_ready_callback | impl Fn( ReportInfo ) + Send + Sync + 'static : Замыкание, которое получает и обрабатывает уведомления, когда новый отчет по метрикам готов к получению |
| Возвраты | |
|---|---|
TelemetryResult <()> | В случае успеха результат будет пустым, в случае неудачи — возникнет TelemetryError |
заканчивать
pub fn finish(&self) -> TelemetryResult<()>
Этот метод корректно завершает соединение со службой, удаляет зарегистрированные обработчики событий и очищает связанные ресурсы. Вызовите этот метод один раз при завершении работы приложения.
| Возвраты | |
|---|---|
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 MetricsReport в случае успеха или экземпляр TelemetryError в случае неудачи. |
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<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
Структура TelemetryServiceStatus служит аргументом для замыкания misc_status_callback функции init , которое регистрируется во время инициализации сервиса. Она предоставляет асинхронные обновления о состоянии сервиса и проблемах во время выполнения, например, об отключении от источника данных.
| Поля | |
|---|---|
id | usize : Уникальный идентификатор события состояния. |
code | TelemetryServiceStatusCodes : Код состояния, классифицирующий событие. |
message | String : удобочитаемое описание статуса |
details | Option< StatusDetails > : Дополнительные структурированные данные, предоставляющие дополнительную информацию о статусе. |
StatusDetails
Этот перечислимый тип содержит информацию о конкретных контекстах ошибок. Если details присутствует в TelemetryServiceStatus , оно принимает один из следующих вариантов:
| Варианты | |
|---|---|
AggregationPublisherErrorDetails | Произошла ошибка при агрегировании данных. |
ServicePublisherErrorDetails | Произошла ошибка при попытке подключения к службе. |
ConditionalTriggerErrorDetails | Произошла ошибка при оценке выражения условного триггера. |
MetricsReportGeneratorErrorDetails | Произошла ошибка при создании отчета по показателям. |
ServiceErrorDetails | Произошла ошибка при получении нового сообщения от сервиса. |
FileIOErrorDetails | Произошла ошибка ввода-вывода файла. |
Каждый вариант перечисления содержит дополнительные поля, предоставляющие еще больше контекста.
ReportInfo
Структура ReportInfo служит аргументом для замыкания report_ready_callback функции init , которое регистрируется во время инициализации сервиса. Она содержит идентификаторы, описывающие отчет по метрикам:
| Поля | |
|---|---|
config_uuid | String : UUID конфигурации метрик, на основе которой был сгенерирован отчет. |
report_uuid | String : UUID отчета по метрикам, готового к получению. |
Поле report_uuid является единственным необходимым для дальнейшего получения самого отчета по метрикам (см. get_metrics_report ), в то время как config_uuid служит лишь дополнительной информацией о его источнике.