gardesk/gartop / d583678

Browse files

Add temperature collection to daemon

Authored by espadonne
SHA
d583678e970e9830c7c0f00b7cf740842fa7e324
Parents
9c4da63
Tree
541ec6c

2 changed files

StatusFile+-
M gartop/src/daemon/mod.rs 4 0
M gartop/src/daemon/state.rs 13 2
gartop/src/daemon/mod.rsmodified
@@ -137,6 +137,10 @@ async fn handle_client(
137137
                     };
138138
                     Response::ok_with_data(data)
139139
                 }
140
+                Command::GetTemperature => match s.collect_temperature() {
141
+                    Ok(stats) => Response::ok_with_data(stats),
142
+                    Err(e) => Response::err(e.to_string()),
143
+                }
140144
                 Command::GetProcesses { sort_by, limit } => {
141145
                     match s.collect_processes(sort_by.unwrap_or_default(), limit) {
142146
                         Ok(procs) => Response::ok_with_data(procs),
gartop/src/daemon/state.rsmodified
@@ -1,8 +1,8 @@
11
 //! Daemon state management
22
 
3
-use crate::collector::{CpuCollector, DiskCollector, History, MemoryCollector, NetworkCollector, ProcessCollector};
3
+use crate::collector::{CpuCollector, DiskCollector, History, MemoryCollector, NetworkCollector, ProcessCollector, TempCollector};
44
 use crate::error::Result;
5
-use gartop_ipc::{CpuStats, DiskStats, MemoryStats, NetworkStats, ProcessInfo, SortField};
5
+use gartop_ipc::{CpuStats, DiskStats, MemoryStats, NetworkStats, ProcessInfo, SortField, TempStats};
66
 use procfs::Current;
77
 use std::time::Instant;
88
 
@@ -13,11 +13,13 @@ pub struct DaemonState {
1313
     pub network_collector: NetworkCollector,
1414
     pub disk_collector: DiskCollector,
1515
     pub process_collector: ProcessCollector,
16
+    pub temp_collector: TempCollector,
1617
     pub cpu_history: History<CpuStats>,
1718
     pub memory_history: History<MemoryStats>,
1819
     pub network_history: History<Vec<NetworkStats>>,
1920
     pub disk_history: History<Vec<DiskStats>>,
2021
     pub processes: Vec<ProcessInfo>,
22
+    pub temp_stats: Option<TempStats>,
2123
     pub started: Instant,
2224
     pub sample_interval_ms: u64,
2325
 }
@@ -31,11 +33,13 @@ impl DaemonState {
3133
             network_collector: NetworkCollector::new(),
3234
             disk_collector: DiskCollector::new(),
3335
             process_collector: ProcessCollector::new()?,
36
+            temp_collector: TempCollector::new()?,
3437
             cpu_history: History::new(history_size),
3538
             memory_history: History::new(history_size),
3639
             network_history: History::new(history_size),
3740
             disk_history: History::new(history_size),
3841
             processes: Vec::new(),
42
+            temp_stats: None,
3943
             started: Instant::now(),
4044
             sample_interval_ms,
4145
         })
@@ -69,6 +73,13 @@ impl DaemonState {
6973
         Ok(stats)
7074
     }
7175
 
76
+    /// Collect temperature stats (no history, just current values).
77
+    pub fn collect_temperature(&mut self) -> Result<TempStats> {
78
+        let stats = self.temp_collector.collect()?;
79
+        self.temp_stats = Some(stats.clone());
80
+        Ok(stats)
81
+    }
82
+
7283
     /// Collect process list.
7384
     pub fn collect_processes(
7485
         &mut self,