use std::num::NonZeroU64;
use sysinfo::System;
use crate::collection::memory::MemData;
#[inline]
fn get_usage(used: u64, total: u64) -> Option<MemData> {
NonZeroU64::new(total).map(|total_bytes| MemData {
total_bytes,
used_bytes: used,
})
}
pub(crate) fn get_ram_usage(sys: &System) -> Option<MemData> {
get_usage(sys.used_memory(), sys.total_memory())
}
#[cfg(not(target_os = "windows"))]
pub(crate) fn get_swap_usage(sys: &System) -> Option<MemData> {
get_usage(sys.used_swap(), sys.total_swap())
}
#[cfg(not(target_os = "windows"))]
pub(crate) fn get_cache_usage(sys: &System) -> Option<MemData> {
let mem_used = sys.available_memory().saturating_sub(sys.free_memory());
let mem_total = sys.total_memory();
get_usage(mem_used, mem_total)
}