Библиотека клиента телеметрии на Rust

Клиент телеметрии — это приложение, которое взаимодействует со службой телеметрии для настройки сбора данных, управления конфигурациями метрик и получения отчетов телеметрии. Клиенты используют библиотеку Rust libsdv_telemetry_rust_wrapper для взаимодействия со службой.

Обзор поверхности API

Для получения документации по API см. справочник по API библиотеки клиента телеметрии Rust .

Библиотека предоставляет интерфейс на языке Rust для взаимодействия с базовой службой телеметрии. Библиотека отвечает за следующие области:

  • Управление жизненным циклом сервиса: управляет подключением к службе телеметрии.

    • Инициализация: Устанавливает соединение со службой с помощью блокирующего вызова. После подключения вы можете зарегистрировать обратные вызовы для получения асинхронных уведомлений о состоянии системы и доступности новых отчетов.
    • Завершение работы: Обеспечивает корректное отключение от сервиса и очистку всех связанных ресурсов.
  • Управление жизненным циклом конфигурации метрик: обеспечивает контроль над жизненным циклом конфигураций метрик .

    • Управление: Клиенты могут добавлять, удалять, активировать и деактивировать конфигурации метрик.
    • Проверка: Вы можете запросить список активных и неактивных конфигураций.
  • Обработка и поиск отчетов: Обеспечивает доступ к данным, собранным службой телеметрии.

    • Уведомления: Асинхронно уведомляет клиентов с помощью функции обратного вызова всякий раз, когда новый отчет по метрикам готов к получению.
    • Доступ к данным: Предоставляет методы для получения конкретных отчетов по их UUID, а также для получения списка всех доступных отчетов.
  • Отчеты о состоянии и ошибках: предоставляют информацию о работоспособности и состоянии службы телеметрии.

    • Асинхронные обновления статуса: клиенты получают обновления статуса в режиме реального времени, включая ошибки и предупреждения, через выделенный обратный вызов. Это позволяет реализовать надежную обработку ошибок и отслеживать состояние сервиса.

Пример использования

Полный, компилируемый пример приложения, демонстрирующий весь жизненный цикл, можно найти в примере реализации клиента: samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs .

Пример клиентского приложения представляет собой утилиту командной строки, взаимодействующую с полным API библиотеки. В примере показано, как связать интерфейс библиотеки, основанный на обратных вызовах, с асинхронной средой выполнения Rust (Tokio) с использованием каналов.

Клиент выполняет следующую последовательность операций:

  1. Устанавливает соединение со службой телеметрии и регистрирует обратные вызовы для получения обновлений статуса и уведомлений об отчетах по метрикам.
  2. Программа считывает файлы конфигурации метрик, предоставленные в качестве аргументов командной строки, а затем добавляет и активирует конфигурации в службе.
  3. Использует фоновую задачу для регистрации асинхронных сообщений о состоянии (ошибок или предупреждений), полученных от сервиса.
  4. Управляет циклом извлечения данных, выполняя следующие действия:
    • Ожидает уведомления о готовности отчета по показателям.
    • Получает полные данные отчета по показателям.
    • При необходимости отчет записывается на диск в виде двоичного файла протокола Protocol Buffer.
  5. Удаляет конфигурацию метрик из сервиса после того, как он сгенерирует первый отчет по метрикам. Обратите внимание, что это демонстрационная реализация, и ваши собственные клиенты могут получать любое количество отчетов.
  6. Корректно закрывает соединение со службой.