AirLibrary/Client/AirClient/
GetResourceUsage.rs1use tonic::Request;
9
10use crate::{
11 AirError,
12 Client::AirClient::{AirClient, ResourceUsage},
13 Vine::Generated::air::ResourceUsageRequest,
14 dev_log,
15};
16
17impl AirClient {
18 pub async fn GetResourceUsage(&self, request_id:String) -> Result<ResourceUsage::Struct, AirError> {
20 dev_log!("grpc", "[AirClient] Getting resource usage");
21
22 let RequestPayload = ResourceUsageRequest { request_id };
23
24 let Client = self
25 .Client()
26 .ok_or_else(|| AirError::Network("Air client not initialized".to_string()))?;
27
28 let mut ClientGuard = Client.lock().await;
29
30 match ClientGuard.get_resource_usage(Request::new(RequestPayload)).await {
31 Ok(Response) => {
32 let Response = Response.into_inner();
33
34 dev_log!("grpc", "[AirClient] Resource usage retrieved");
35
36 Ok(ResourceUsage::Struct {
37 memory_usage_mb:Response.memory_usage_mb,
38 cpu_usage_percent:Response.cpu_usage_percent,
39 disk_usage_mb:Response.disk_usage_mb,
40 network_usage_mbps:Response.network_usage_mbps,
41 thread_count:0,
42 open_file_handles:0,
43 })
44 },
45
46 Err(Status) => {
47 dev_log!("grpc", "error: [AirClient] Get resource usage RPC error: {}", Status);
48
49 Err(AirError::Network(format!("Get resource usage RPC error: {}", Status)))
50 },
51 }
52 }
53}