Rust テレメトリー クライアント ライブラリ

テレメトリー クライアントは、テレメトリー サービスとやり取りして、データの収集の構成、指標構成の管理、テレメトリー レポートの受信を行うアプリです。クライアントは、libsdv_telemetry_rust_wrapper Rust ライブラリを使用してサービスとやり取りします。

API サーフェスの概要

API ドキュメントについては、Rust テレメトリー クライアント ライブラリの API リファレンスをご覧ください。

このライブラリは、基盤となるテレメトリー サービスとやり取りするための Rust インターフェースを提供します。このライブラリは、次の領域を担当します。

  • サービスのライフサイクル管理: テレメトリー サービスへの接続を管理します。

    • 初期化: ブロッキング呼び出しを使用してサービスへの接続を確立します。接続後、コールバックを登録して、システム ステータスと新しいレポートの可用性に関する非同期通知を受け取ることができます。
    • シャットダウン: サービスから正常に切断し、関連するすべてのリソースをクリーンアップする方法を提供します。
  • 指標構成のライフサイクル管理: 指標構成の ライフサイクルを制御できます。

    • 管理: クライアントは、指標構成の追加、削除、有効化、無効化を行うことができます。
    • 検査: 有効な構成と無効な構成のリストを照会できます。
  • レポートの処理と取得: テレメトリー サービスによって収集されたデータへのアクセスを容易にします。

    • 通知: 新しい指標レポートを取得できる状態になると、コールバックを使用してクライアントに非同期で通知します。
    • データアクセス: UUID で特定のレポートを取得し、利用可能なすべてのレポートのリストを取得するメソッドを提供します。
  • ステータスとエラーのレポート: テレメトリー サービスの健全性とステータスに関する分析情報を提供します。

    • 非同期ステータスの更新: クライアントは、専用のコールバックを通じて、エラーや警告などのリアルタイムのステータス更新を受け取ります。 これにより、堅牢なエラー処理を実装し、サービスの状態をモニタリングできます。

使用例

完全なライフサイクルを示すコンパイル可能なアプリについては、サンプル クライアントの実装 samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs をご覧ください。

サンプル クライアントは、ライブラリ API 全体とやり取りするコマンドライン ユーティリティです。このサンプルでは、チャネルを使用して、ライブラリのコールバック ベースのインターフェースと非同期 Rust ランタイム(Tokio)をブリッジする方法を示します。

クライアントは次のオペレーション シーケンスを実行します。

  1. テレメトリー サービスへの接続を確立し、ステータスの更新と指標レポートの通知のコールバックを登録します。
  2. コマンドライン引数として指定された指標構成ファイルを読み取り、サービスに構成を追加して有効にします。
  3. バックグラウンド タスクを使用して、サービスから受信した非同期ステータス メッセージ(エラーまたは警告)をログに記録します。
  4. 次の操作を行って、データ取得ループを管理します。
    • 指標レポートの準備ができたという通知を待ちます。
    • 完全な指標レポートデータを取得します。
    • 必要に応じて、レポートをバイナリ プロトコル バッファ ファイルとしてディスクに書き込みます。
  5. 最初の指標レポートが生成されたら、サービスから指標構成を削除します。これはデモ実装であり、独自のクライアントは任意の数のレポートを受信できます。
  6. サービスへの接続を正常に閉じます。