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