pub mod buf_reader;
pub mod shmbuf_reader;
pub fn can_create_on_dev_shm(size: u64, path: &str) -> bool {
#[cfg(target_os = "linux")]
{
if path.contains("/dev/shm") {
match fs2::free_space("/dev/shm") {
Ok(free) => return free >= size,
Err(err) => {
tracing::warn!(
"could not read /dev/shm free size, can_create_on_dev_shm default return \
true, err: {}",
err
);
return false;
}
}
}
}
true
}
#[cfg(test)]
mod tests {
use crate::util::can_create_on_dev_shm;
#[test]
fn test_can_create_on_dev_shm() {
#[cfg(target_os = "linux")]
{
assert!(can_create_on_dev_shm(u64::MAX, "sdffafds"));
let free = fs2::free_space("/dev/shm").unwrap();
assert!(can_create_on_dev_shm(free, "/dev/shm/xxx"));
assert!(!can_create_on_dev_shm(free + 1, "/dev/shm/yyy"));
}
#[cfg(target_os = "macos")]
{
assert!(can_create_on_dev_shm(33333, "sdffafds"));
}
}
}