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

daemon: use internal error types

This commit is contained in:
NotAShelf 2025-05-18 14:26:42 +03:00
parent 38960ce8bc
commit 99fbfc0ea7
No known key found for this signature in database
GPG key ID: 29D95B64378DB4BF

View file

@ -2,7 +2,7 @@ use crate::config::{AppConfig, LogLevel};
use crate::core::SystemReport; use crate::core::SystemReport;
use crate::engine; use crate::engine;
use crate::monitor; use crate::monitor;
use crate::util::error::AppError; use crate::util::error::{AppError, ControlError};
use log::{LevelFilter, debug, error, info, warn}; use log::{LevelFilter, debug, error, info, warn};
use std::collections::VecDeque; use std::collections::VecDeque;
use std::fs::File; use std::fs::File;
@ -61,7 +61,7 @@ fn idle_multiplier(idle_secs: u64) -> f32 {
/// Calculate optimal polling interval based on system conditions and history /// Calculate optimal polling interval based on system conditions and history
/// ///
/// Returns Ok with the calculated interval, or Err if the configuration is invalid /// Returns Ok with the calculated interval, or Err if the configuration is invalid
fn compute_new(params: &IntervalParams, system_history: &SystemHistory) -> Result<u64, String> { fn compute_new(params: &IntervalParams, system_history: &SystemHistory) -> Result<u64, ControlError> {
// Use the centralized validation function // Use the centralized validation function
validate_poll_intervals(params.min_interval, params.max_interval)?; validate_poll_intervals(params.min_interval, params.max_interval)?;
@ -359,7 +359,7 @@ impl SystemHistory {
&self, &self,
config: &AppConfig, config: &AppConfig,
on_battery: bool, on_battery: bool,
) -> Result<u64, String> { ) -> Result<u64, ControlError> {
let params = IntervalParams { let params = IntervalParams {
base_interval: config.daemon.poll_interval_sec, base_interval: config.daemon.poll_interval_sec,
min_interval: config.daemon.min_poll_interval_sec, min_interval: config.daemon.min_poll_interval_sec,
@ -378,14 +378,24 @@ impl SystemHistory {
/// Validates that poll interval configuration is consistent /// Validates that poll interval configuration is consistent
/// Returns Ok if configuration is valid, Err with a descriptive message if invalid /// Returns Ok if configuration is valid, Err with a descriptive message if invalid
fn validate_poll_intervals(min_interval: u64, max_interval: u64) -> Result<(), String> { fn validate_poll_intervals(min_interval: u64, max_interval: u64) -> Result<(), ControlError> {
if min_interval < 1 {
return Err(ControlError::InvalidValueError(
"min_interval must be ≥ 1".to_string()
));
}
if max_interval < 1 {
return Err(ControlError::InvalidValueError(
"max_interval must be ≥ 1".to_string()
));
}
if max_interval >= min_interval { if max_interval >= min_interval {
Ok(()) Ok(())
} else { } else {
Err(format!( Err(ControlError::InvalidValueError(format!(
"Invalid interval configuration: max_interval ({}) is less than min_interval ({})", "Invalid interval configuration: max_interval ({}) is less than min_interval ({})",
max_interval, min_interval max_interval, min_interval
)) )))
} }
} }
@ -416,10 +426,7 @@ pub fn run_daemon(config: AppConfig, verbose: bool) -> Result<(), AppError> {
config.daemon.min_poll_interval_sec, config.daemon.min_poll_interval_sec,
config.daemon.max_poll_interval_sec, config.daemon.max_poll_interval_sec,
) { ) {
return Err(AppError::Generic(format!( return Err(AppError::Control(err));
"Invalid configuration: {}. Please fix your configuration.",
err
)));
} }
// Create a flag that will be set to true when a signal is received // Create a flag that will be set to true when a signal is received