use sysinfo::System;
use crate::cv;
pub struct Info {
pub sys: System,
}
impl Info {
pub fn new() -> Self {
let sys = System::new_all();
Info { sys }
}
pub fn total_memory(&self) -> u64 {
cv::bytes_to_mb(self.sys.total_memory())
}
pub fn used_memory(&self) -> u64 {
cv::bytes_to_mb(self.sys.used_memory())
}
pub fn used_memory_percent(&self) -> f64 {
let used = self.used_memory() as f64;
let total = self.total_memory() as f64;
if total == 0.0 {
0.0
} else {
cv::percentage_cal(used, total)
}
}
pub fn free_memory(&self) -> u64 {
cv::bytes_to_mb(self.sys.free_memory())
}
pub fn free_memory_percent(&self) -> f64 {
let free_memory = self.free_memory() as f64;
let total_memory = self.total_memory() as f64;
if total_memory == 0.0 {
0.0
} else {
cv::percentage_cal(free_memory, total_memory)
}
}
pub fn available_memory(&self) -> u64 {
cv::bytes_to_mb(self.sys.available_memory())
}
pub fn available_memory_percent(&self) -> f64 {
let available_memory = self.available_memory() as f64;
let total_memory = self.total_memory() as f64;
if total_memory == 0.0 {
0.0
} else {
cv::percentage_cal(available_memory, total_memory)
}
}
pub fn total_swap(&self) -> u64 {
cv::bytes_to_mb(self.sys.total_swap())
}
pub fn free_swap(&self) -> u64 {
cv::bytes_to_mb(self.sys.free_swap())
}
pub fn free_swap_percent(&self) -> f64 {
let free_swap = self.free_swap() as f64;
let total_swap = self.total_swap() as f64;
if total_swap == 0.0 {
0.0
} else {
cv::percentage_cal(free_swap, total_swap)
}
}
pub fn used_swap(&self) -> u64 {
cv::bytes_to_mb(self.sys.used_swap())
}
pub fn used_swap_percent(&self) -> f64 {
let used = self.used_swap() as f64;
let total = self.total_swap() as f64;
if total == 0.0 {
0.0
} else {
cv::percentage_cal(used, total)
}
}
}