use super::types::DetectionConfidence;
use sysinfo::System;
pub struct MemoryInfo {
pub available_mb: u64,
pub total_mb: u64,
pub confidence: DetectionConfidence,
}
pub fn detect_memory() -> MemoryInfo {
let mut sys = System::new();
sys.refresh_memory();
let total_bytes = sys.total_memory();
let available_bytes = sys.available_memory();
if total_bytes > 0 {
MemoryInfo {
available_mb: available_bytes / (1024 * 1024),
total_mb: total_bytes / (1024 * 1024),
confidence: DetectionConfidence::High, }
} else {
MemoryInfo {
available_mb: 4096,
total_mb: 8192,
confidence: DetectionConfidence::Low,
}
}
}
#[allow(dead_code)]
pub fn detect_memory_legacy() -> (u64, u64) {
let info = detect_memory();
(info.available_mb, info.total_mb)
}
pub struct CpuInfo {
pub usage_percent: f32,
pub cores: u32,
pub confidence: DetectionConfidence,
}
pub fn detect_cpu() -> CpuInfo {
let mut sys = System::new();
sys.refresh_cpu_all();
let cores = sys.cpus().len() as u32;
let usage = sys.global_cpu_usage();
if cores > 0 {
CpuInfo {
usage_percent: usage,
cores,
confidence: if usage > 0.0 {
DetectionConfidence::High
} else {
DetectionConfidence::Medium },
}
} else {
CpuInfo {
usage_percent: 0.0,
cores: 1,
confidence: DetectionConfidence::Low,
}
}
}