use crate::cpu::CpuTimesPercentCollector;
use crate::{Percent, Result};
#[derive(Debug, Clone)]
pub struct CpuPercentCollector {
cpu_times_percent_collector: CpuTimesPercentCollector,
}
impl CpuPercentCollector {
pub fn new() -> Result<CpuPercentCollector> {
let cpu_times_percent_collector = CpuTimesPercentCollector::new()?;
Ok(CpuPercentCollector {
cpu_times_percent_collector,
})
}
pub fn cpu_percent(&mut self) -> Result<Percent> {
let percent = self.cpu_times_percent_collector.cpu_times_percent()?.busy();
Ok(percent)
}
pub fn cpu_percent_percpu(&mut self) -> Result<Vec<Percent>> {
let percents = self
.cpu_times_percent_collector
.cpu_times_percent_percpu()?
.into_iter()
.map(|cpu_times_percent| cpu_times_percent.busy())
.collect();
Ok(percents)
}
}