このページでは、libsdv_telemetry_rust_wrapper ライブラリの型、メソッド、エラー処理について説明します。
TelemetryServiceHolder インターフェース
クライアントのプライマリ インターフェースは TelemetryServiceHolder 構造体です。このインターフェースは、サービス接続、指標の構成、データレポートを管理するためのメソッドの完全なセットを提供します。
サービスのライフサイクル管理
これらのメソッドは、基盤となるテレメトリー サービスとの接続を確立して終了します。
get
pub fn get() -> TelemetryResult<TelemetryServiceHolder>
テレメトリー サービスへのスレッドセーフ ハンドルを取得する静的メソッド。
これは、テレメトリー バインダー サービスの準備が整うまで待機するブロッキング呼び出しです。
テレメトリー サービスは、TelemetryServiceHolder の単一インスタンスのみをサポートします。このメソッドを複数回呼び出すと、未定義または予期しない動作が発生します。
TelemetryServiceHolder は Send トレイトと Sync トレイトを実装しているため、Arc のインスタンスでラップするなどして、スレッド間で安全に共有できます。TelemetryServiceHolder のほとんどのメソッドは async であり、同時に使用できます。
| 戻り値 | |
|---|---|
TelemetryResult<TelemetryServiceHolder>
|
サービス ハンドルを含む結果。サービスを取得できない場合は
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 を取得したら、他の操作を行う前にこのメソッドを 1 回呼び出します。
| パラメータ | |
|---|---|
misc_status_callback
|
impl Fn(TelemetryServiceStatus) + Send + Sync +
'static: テレメトリー サービスからステータスとエラーの更新を受信して処理するクロージャ
|
report_ready_callback
|
impl Fn(ReportInfo) + Send + Sync + 'static: 新しい指標レポートを取得できる状態になったときに通知を受信して処理するクロージャ |
| 戻り値 | |
|---|---|
TelemetryResult<()>
|
成功した場合は空の結果。失敗した場合は
TelemetryError インスタンス
|
finish
pub fn finish(&self) -> TelemetryResult<()>
サービス接続を正常にシャットダウンし、登録済みのリスナーをクリアして、関連するリソースをクリーンアップします。アプリが終了するときにこのメソッドを 1 回呼び出します。
| 戻り値 | |
|---|---|
TelemetryResult<()>
|
成功した場合は空の結果。失敗した場合は
TelemetryError インスタンス
|
指標の構成管理
これらの非同期メソッドは、データの収集構成の定義と状態を管理します。
テレメトリー サービスは、構成を次の 2 つの状態に維持します。
- 非アクティブ: 構成は検証されてディスクに保存されますが、データの収集には使用されません。
- アクティブ: 構成はデータを収集し、そのコンポーネント(トリガー、パブリッシャーなど)はアクティブです。
サービスの再起動やデバイスの再起動後も構成が維持されるように、サービスはデバイスのディスクに構成を保存します。サービスはすべての構成を 2 つの状態ベースのディレクトリに保存し、起動時に検証して、必要に応じてアクティブにします。
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>
|
成功した場合は、逆シリアル化された MetricsReport protobuf オブジェクトを含む結果。失敗した場合は
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
ほとんどのメソッドは TelemetryResult<T> を返します。これは、サービスレベルのエラーに特化した標準の
Result 型のエイリアスです。
pub type TelemetryResult<T> = Result<T, TelemetryError>;
TelemetryError
TelemetryError 構造体はすべての失敗をカプセル化し、サービス固有の詳細なエラー情報を提供します。
| フィールド | |
|---|---|
status
|
TelemetryServiceStatusCodes: 列挙可能なエラーコード
|
message
|
String: エラーの詳細を示す説明メッセージ |
TelemetryServiceStatusCodes
API 呼び出しの結果と内部サービスの状態を表す数値列挙。これらのコードは、TelemetryError と
TelemetryServiceStatus の両方で使用されます。例:
| Codes | ||
|---|---|---|
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
この enum は特定のエラー コンテキストをラップします。
TelemetryServiceStatus に details が存在する場合、
次のいずれかのバリアントになります。
| バリエーション | |
|---|---|
AggregationPublisherErrorDetails
|
データの集計中にエラーが発生しました |
ServicePublisherErrorDetails
|
サービスへの接続を試行中にエラーが発生しました |
ConditionalTriggerErrorDetails
|
条件付きトリガーの式の評価中にエラーが発生しました |
MetricsReportGeneratorErrorDetails
|
指標レポートの生成中にエラーが発生しました |
ServiceErrorDetails
|
サービスから新しいメッセージを受信中にエラーが発生しました |
FileIOErrorDetails
|
ファイル I/O エラーが発生しました |
各 enum バリアントには、さらに多くのコンテキストを提供する追加のフィールドが含まれています。
ReportInfo
ReportInfo 構造体は、サービス初期化時に登録される report_ready_callback
クロージャの引数として機能します。init指標レポートを記述する識別子が含まれています。
| フィールド | |
|---|---|
config_uuid
|
String: レポートを生成した指標構成の UUID |
report_uuid
|
String: 取得できる状態になっている指標レポートの UUID |
report_uuid フィールドは、
指標レポート自体の取得(get_metrics_report を参照)に必要な唯一のフィールドですが、
config_uuid はソースに関する追加情報としてのみ機能します。