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

daemon: refactor SystemHistory init; derive Default for SystemState

This commit is contained in:
NotAShelf 2025-05-17 05:19:32 +03:00
parent 4aea53e060
commit 59602b0e3e
No known key found for this signature in database
GPG key ID: 29D95B64378DB4BF

View file

@ -131,6 +131,7 @@ fn compute_new(params: &IntervalParams) -> u64 {
}
/// Tracks historical system data for "advanced" adaptive polling
#[derive(Debug)]
struct SystemHistory {
/// Last several CPU usage measurements
cpu_usage_history: VecDeque<f32>,
@ -152,21 +153,23 @@ struct SystemHistory {
current_state: SystemState,
}
impl SystemHistory {
fn new() -> Self {
impl Default for SystemHistory {
fn default() -> Self {
Self {
cpu_usage_history: VecDeque::with_capacity(5),
temperature_history: VecDeque::with_capacity(5),
cpu_usage_history: VecDeque::new(),
temperature_history: VecDeque::new(),
last_user_activity: Instant::now(),
last_battery_percentage: None,
last_battery_timestamp: None,
battery_discharge_rate: None,
state_durations: std::collections::HashMap::new(),
last_state_change: Instant::now(),
current_state: SystemState::Unknown,
current_state: SystemState::default(),
}
}
}
impl SystemHistory {
/// Update system history with new report data
fn update(&mut self, report: &SystemReport) {
// Update CPU usage history
@ -422,7 +425,7 @@ pub fn run_daemon(mut config: AppConfig, verbose: bool) -> Result<(), Box<dyn st
// Variables for adaptive polling
let mut current_poll_interval = config.daemon.poll_interval_sec;
let mut system_history = SystemHistory::new();
let mut system_history = SystemHistory::default();
// Main loop
while running.load(Ordering::SeqCst) {
@ -574,8 +577,9 @@ fn write_stats_file(path: &str, report: &SystemReport) -> Result<(), std::io::Er
}
/// Simplified system state used for determining when to adjust polling interval
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
#[derive(Debug, PartialEq, Eq, Clone, Hash, Default)]
enum SystemState {
#[default]
Unknown,
OnAC,
OnBattery,