Skip to main content

Mountain/IPC/WindAirCommands/
GetAirMetrics.rs

1
2//! `GetAirMetrics` Tauri command - pull memory / CPU / disk /
3//! network counters from Air, optionally filtered by metric
4//! type ("performance", "resources", "requests").
5
6use crate::{
7	IPC::WindAirCommands::{AirMetricsDTO, GetAirAddress, GetOrCreateAirClient},
8	dev_log,
9};
10
11#[tauri::command]
12pub async fn GetAirMetrics(metric_type:Option<String>) -> Result<AirMetricsDTO::Struct, String> {
13	dev_log!("grpc", "[WindAirCommands] GetAirMetrics called with type: {:?}", metric_type);
14
15	let air_address = GetAirAddress::Fn()?;
16
17	let client = GetOrCreateAirClient::Fn(air_address).await?;
18
19	let request_id = uuid::Uuid::new_v4().to_string();
20
21	let metrics = client
22		.get_metrics(request_id, metric_type)
23		.await
24		.map_err(|e| format!("Failed to get Air metrics: {:?}", e))?;
25
26	let result = AirMetricsDTO::Struct {
27		memory_usage_mb:metrics.memory_usage_mb,
28
29		cpu_usage_percent:metrics.cpu_usage_percent,
30
31		average_response_time:metrics.average_response_time,
32
33		disk_usage_mb:metrics.disk_usage_mb,
34
35		network_usage_mbps:metrics.network_usage_mbps,
36	};
37
38	dev_log!("grpc", "[WindAirCommands] Air metrics retrieved");
39
40	Ok(result)
41}