Skip to content

Commit 40b0426

Browse files
committed
add example
1 parent 9ede470 commit 40b0426

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//! Quick X5 camera RPC connectivity check.
2+
//!
3+
//! Run with:
4+
//! `cargo run -p booster_sdk --example x5_camera_rpc_check`
5+
//!
6+
//! Optional env vars:
7+
//! - `BOOSTER_DOMAIN_ID` (default: `0`)
8+
//! - `BOOSTER_TIMEOUT_MS` (default: `3000`)
9+
//! - `BOOSTER_RPC_DEBUG` (`1`/`true` for verbose RPC logs)
10+
11+
use std::time::{Duration, Instant};
12+
13+
use booster_sdk::client::x5_camera::X5CameraClient;
14+
use booster_sdk::dds::{RpcClientOptions, X5_CAMERA_CONTROL_API_TOPIC};
15+
16+
#[tokio::main]
17+
async fn main() -> Result<(), Box<dyn std::error::Error>> {
18+
tracing_subscriber::fmt().with_env_filter("info").init();
19+
20+
let domain_id = std::env::var("BOOSTER_DOMAIN_ID")
21+
.ok()
22+
.and_then(|v| v.parse::<u16>().ok())
23+
.unwrap_or(0);
24+
let timeout_ms = std::env::var("BOOSTER_TIMEOUT_MS")
25+
.ok()
26+
.and_then(|v| v.parse::<u64>().ok())
27+
.unwrap_or(3000);
28+
29+
println!(
30+
"X5 RPC check: domain_id={}, timeout_ms={}, topic={}",
31+
domain_id, timeout_ms, X5_CAMERA_CONTROL_API_TOPIC
32+
);
33+
34+
let client = X5CameraClient::with_options(RpcClientOptions {
35+
domain_id,
36+
default_timeout: Duration::from_millis(timeout_ms),
37+
service_topic: X5_CAMERA_CONTROL_API_TOPIC.to_owned(),
38+
})?;
39+
40+
let started = Instant::now();
41+
match client.get_status().await {
42+
Ok(resp) => {
43+
let elapsed = started.elapsed();
44+
println!(
45+
"OK: status={} status_enum={:?} elapsed_ms={}",
46+
resp.status,
47+
resp.status_enum(),
48+
elapsed.as_millis()
49+
);
50+
Ok(())
51+
}
52+
Err(err) => {
53+
let elapsed = started.elapsed();
54+
eprintln!("ERR: {err}");
55+
eprintln!("elapsed_ms={}", elapsed.as_millis());
56+
std::process::exit(2);
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)