Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/IPC/WindAirCommands/
GetAirMetrics.rs

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