1
Fork 0
mirror of https://github.com/RGBCube/superfreq synced 2025-07-27 17:07:44 +00:00

daemon change CPU and temperature history to use VecDeque

This commit is contained in:
NotAShelf 2025-05-17 01:52:35 +03:00
parent 8c3a1848e1
commit 264cd6a4e9
No known key found for this signature in database
GPG key ID: 29D95B64378DB4BF

View file

@ -4,6 +4,7 @@ use crate::core::SystemReport;
use crate::engine; use crate::engine;
use crate::monitor; use crate::monitor;
use log::{LevelFilter, debug, error, info, warn}; use log::{LevelFilter, debug, error, info, warn};
use std::collections::VecDeque;
use std::fs::File; use std::fs::File;
use std::io::Write; use std::io::Write;
use std::sync::Arc; use std::sync::Arc;
@ -13,9 +14,9 @@ use std::time::{Duration, Instant};
/// Tracks historical system data for advanced adaptive polling /// Tracks historical system data for advanced adaptive polling
struct SystemHistory { struct SystemHistory {
/// Last several CPU usage measurements /// Last several CPU usage measurements
cpu_usage_history: Vec<f32>, cpu_usage_history: VecDeque<f32>,
/// Last several temperature readings /// Last several temperature readings
temperature_history: Vec<f32>, temperature_history: VecDeque<f32>,
/// Time of last detected user activity /// Time of last detected user activity
last_user_activity: Instant, last_user_activity: Instant,
/// Previous battery percentage (to calculate discharge rate) /// Previous battery percentage (to calculate discharge rate)
@ -35,8 +36,8 @@ struct SystemHistory {
impl SystemHistory { impl SystemHistory {
fn new() -> Self { fn new() -> Self {
Self { Self {
cpu_usage_history: Vec::with_capacity(5), cpu_usage_history: VecDeque::with_capacity(5),
temperature_history: Vec::with_capacity(5), temperature_history: VecDeque::with_capacity(5),
last_user_activity: Instant::now(), last_user_activity: Instant::now(),
last_battery_percentage: None, last_battery_percentage: None,
last_battery_timestamp: None, last_battery_timestamp: None,
@ -68,9 +69,9 @@ impl SystemHistory {
// Keep only the last 5 measurements // Keep only the last 5 measurements
if self.cpu_usage_history.len() >= 5 { if self.cpu_usage_history.len() >= 5 {
self.cpu_usage_history.remove(0); self.cpu_usage_history.pop_front();
} }
self.cpu_usage_history.push(avg_usage); self.cpu_usage_history.push_back(avg_usage);
// Update last_user_activity if CPU usage indicates activity // Update last_user_activity if CPU usage indicates activity
// Consider significant CPU usage or sudden change as user activity // Consider significant CPU usage or sudden change as user activity
@ -89,9 +90,9 @@ impl SystemHistory {
// Update temperature history // Update temperature history
if let Some(temp) = report.cpu_global.average_temperature_celsius { if let Some(temp) = report.cpu_global.average_temperature_celsius {
if self.temperature_history.len() >= 5 { if self.temperature_history.len() >= 5 {
self.temperature_history.remove(0); self.temperature_history.pop_front();
} }
self.temperature_history.push(temp); self.temperature_history.push_back(temp);
// Significant temperature increase can indicate user activity // Significant temperature increase can indicate user activity
if self.temperature_history.len() > 1 { if self.temperature_history.len() > 1 {