gardesk/gartop / b45f144

Browse files

Add GPU collector to daemon state

Authored by espadonne
SHA
b45f1441688eec2645c4aa058ea73429903cad70
Parents
0ddda28
Tree
e750345

1 changed file

StatusFile+-
M gartop/src/daemon/state.rs 13 2
gartop/src/daemon/state.rsmodified
@@ -1,8 +1,8 @@
11
 //! Daemon state management
22
 
3
-use crate::collector::{CpuCollector, DiskCollector, History, MemoryCollector, NetworkCollector, ProcessCollector, TempCollector};
3
+use crate::collector::{CpuCollector, DiskCollector, GpuCollector, History, MemoryCollector, NetworkCollector, ProcessCollector, TempCollector};
44
 use crate::error::Result;
5
-use gartop_ipc::{CpuStats, DiskStats, MemoryStats, NetworkStats, ProcessInfo, SortField, TempStats};
5
+use gartop_ipc::{CpuStats, DiskStats, GpuStats, MemoryStats, NetworkStats, ProcessInfo, SortField, TempStats};
66
 use procfs::Current;
77
 use std::time::Instant;
88
 
@@ -14,12 +14,14 @@ pub struct DaemonState {
1414
     pub disk_collector: DiskCollector,
1515
     pub process_collector: ProcessCollector,
1616
     pub temp_collector: TempCollector,
17
+    pub gpu_collector: GpuCollector,
1718
     pub cpu_history: History<CpuStats>,
1819
     pub memory_history: History<MemoryStats>,
1920
     pub network_history: History<Vec<NetworkStats>>,
2021
     pub disk_history: History<Vec<DiskStats>>,
2122
     pub processes: Vec<ProcessInfo>,
2223
     pub temp_stats: Option<TempStats>,
24
+    pub gpu_stats: Option<GpuStats>,
2325
     pub started: Instant,
2426
     pub sample_interval_ms: u64,
2527
 }
@@ -34,12 +36,14 @@ impl DaemonState {
3436
             disk_collector: DiskCollector::new(),
3537
             process_collector: ProcessCollector::new()?,
3638
             temp_collector: TempCollector::new()?,
39
+            gpu_collector: GpuCollector::new()?,
3740
             cpu_history: History::new(history_size),
3841
             memory_history: History::new(history_size),
3942
             network_history: History::new(history_size),
4043
             disk_history: History::new(history_size),
4144
             processes: Vec::new(),
4245
             temp_stats: None,
46
+            gpu_stats: None,
4347
             started: Instant::now(),
4448
             sample_interval_ms,
4549
         })
@@ -80,6 +84,13 @@ impl DaemonState {
8084
         Ok(stats)
8185
     }
8286
 
87
+    /// Collect GPU stats (no history, just current values).
88
+    pub fn collect_gpu(&mut self) -> Result<GpuStats> {
89
+        let stats = self.gpu_collector.collect()?;
90
+        self.gpu_stats = Some(stats.clone());
91
+        Ok(stats)
92
+    }
93
+
8394
     /// Collect process list.
8495
     pub fn collect_processes(
8596
         &mut self,