AirLibrary/Client/AirClient/
GetStatus.rs1use tonic::Request;
8
9use crate::{
10 AirError,
11 Client::AirClient::{AirClient, AirStatus},
12 Vine::Generated::air::StatusRequest,
13 dev_log,
14};
15
16impl AirClient {
17 pub async fn GetStatus(&self, request_id:String) -> Result<AirStatus::Struct, AirError> {
19 dev_log!("grpc", "[AirClient] Getting Air daemon status");
20
21 let RequestPayload = StatusRequest { request_id };
22
23 let Client = self
24 .Client()
25 .ok_or_else(|| AirError::Network("Air client not initialized".to_string()))?;
26
27 let mut ClientGuard = Client.lock().await;
28
29 match ClientGuard.get_status(Request::new(RequestPayload)).await {
30 Ok(Response) => {
31 let Response = Response.into_inner();
32
33 dev_log!(
34 "grpc",
35 "[AirClient] Status retrieved. Active requests: {}",
36 Response.active_requests
37 );
38
39 Ok(AirStatus::Struct {
40 version:Response.version,
41 uptime_seconds:Response.uptime_seconds,
42 total_requests:Response.total_requests,
43 successful_requests:Response.successful_requests,
44 failed_requests:Response.failed_requests,
45 average_response_time:Response.average_response_time,
46 memory_usage_mb:Response.memory_usage_mb,
47 cpu_usage_percent:Response.cpu_usage_percent,
48 active_requests:Response.active_requests,
49 })
50 },
51
52 Err(Status) => {
53 dev_log!("grpc", "error: [AirClient] Get status RPC error: {}", Status);
54
55 Err(AirError::Network(format!("Get status RPC error: {}", Status)))
56 },
57 }
58 }
59}