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 @@
1
 //! Daemon state management
1
 //! Daemon state management
2
 
2
 
3
-use crate::collector::{CpuCollector, DiskCollector, History, MemoryCollector, NetworkCollector, ProcessCollector, TempCollector};
3
+use crate::collector::{CpuCollector, DiskCollector, GpuCollector, History, MemoryCollector, NetworkCollector, ProcessCollector, TempCollector};
4
 use crate::error::Result;
4
 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};
6
 use procfs::Current;
6
 use procfs::Current;
7
 use std::time::Instant;
7
 use std::time::Instant;
8
 
8
 
@@ -14,12 +14,14 @@ pub struct DaemonState {
14
     pub disk_collector: DiskCollector,
14
     pub disk_collector: DiskCollector,
15
     pub process_collector: ProcessCollector,
15
     pub process_collector: ProcessCollector,
16
     pub temp_collector: TempCollector,
16
     pub temp_collector: TempCollector,
17
+    pub gpu_collector: GpuCollector,
17
     pub cpu_history: History<CpuStats>,
18
     pub cpu_history: History<CpuStats>,
18
     pub memory_history: History<MemoryStats>,
19
     pub memory_history: History<MemoryStats>,
19
     pub network_history: History<Vec<NetworkStats>>,
20
     pub network_history: History<Vec<NetworkStats>>,
20
     pub disk_history: History<Vec<DiskStats>>,
21
     pub disk_history: History<Vec<DiskStats>>,
21
     pub processes: Vec<ProcessInfo>,
22
     pub processes: Vec<ProcessInfo>,
22
     pub temp_stats: Option<TempStats>,
23
     pub temp_stats: Option<TempStats>,
24
+    pub gpu_stats: Option<GpuStats>,
23
     pub started: Instant,
25
     pub started: Instant,
24
     pub sample_interval_ms: u64,
26
     pub sample_interval_ms: u64,
25
 }
27
 }
@@ -34,12 +36,14 @@ impl DaemonState {
34
             disk_collector: DiskCollector::new(),
36
             disk_collector: DiskCollector::new(),
35
             process_collector: ProcessCollector::new()?,
37
             process_collector: ProcessCollector::new()?,
36
             temp_collector: TempCollector::new()?,
38
             temp_collector: TempCollector::new()?,
39
+            gpu_collector: GpuCollector::new()?,
37
             cpu_history: History::new(history_size),
40
             cpu_history: History::new(history_size),
38
             memory_history: History::new(history_size),
41
             memory_history: History::new(history_size),
39
             network_history: History::new(history_size),
42
             network_history: History::new(history_size),
40
             disk_history: History::new(history_size),
43
             disk_history: History::new(history_size),
41
             processes: Vec::new(),
44
             processes: Vec::new(),
42
             temp_stats: None,
45
             temp_stats: None,
46
+            gpu_stats: None,
43
             started: Instant::now(),
47
             started: Instant::now(),
44
             sample_interval_ms,
48
             sample_interval_ms,
45
         })
49
         })
@@ -80,6 +84,13 @@ impl DaemonState {
80
         Ok(stats)
84
         Ok(stats)
81
     }
85
     }
82
 
86
 
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
+
83
     /// Collect process list.
94
     /// Collect process list.
84
     pub fn collect_processes(
95
     pub fn collect_processes(
85
         &mut self,
96
         &mut self,