#![allow(non_snake_case)]
use std::path::PathBuf;
use std::sync::OnceLock;
use std::time::Duration;
use crate::envar::path_config::PathConfig;
pub mod path_config;
pub fn MUTEX_TIMEOUT_SECS() -> u64 {
static VALUE: OnceLock<u64> = OnceLock::new();
*VALUE.get_or_init(|| match std::env::var("RSVIM_MUTEX_TIMEOUT_SECS") {
Ok(v1) => match v1.parse::<u64>() {
Ok(v2) => v2,
_ => u64::MAX,
},
_ => u64::MAX,
})
}
pub fn MUTEX_TIMEOUT() -> Duration {
Duration::from_secs(MUTEX_TIMEOUT_SECS())
}
pub fn IO_BUF_SIZE() -> usize {
static VALUE: OnceLock<usize> = OnceLock::new();
*VALUE.get_or_init(|| match std::env::var("RSVIM_IO_BUF_SIZE") {
Ok(v1) => match v1.parse::<usize>() {
Ok(v2) => v2,
_ => 8192_usize,
},
_ => 8192_usize,
})
}
pub fn CHANNEL_BUF_SIZE() -> usize {
static VALUE: OnceLock<usize> = OnceLock::new();
*VALUE.get_or_init(|| match std::env::var("RSVIM_CHANNEL_BUF_SIZE") {
Ok(v1) => match v1.parse::<usize>() {
Ok(v2) => v2,
_ => 1000_usize,
},
_ => 1000_usize,
})
}
static PATH_CONFIG_VALUE: OnceLock<PathConfig> = OnceLock::new();
pub fn CONFIG_FILE_PATH() -> Option<PathBuf> {
PATH_CONFIG_VALUE
.get_or_init(PathConfig::new)
.config_file()
.clone()
}
pub fn CONFIG_DIRS_PATH() -> Vec<PathBuf> {
PATH_CONFIG_VALUE
.get_or_init(PathConfig::new)
.config_dirs()
.clone()
}
pub fn CACHE_DIR_PATH() -> PathBuf {
PATH_CONFIG_VALUE
.get_or_init(PathConfig::new)
.cache_dir()
.clone()
}
pub fn DATA_DIR_PATH() -> PathBuf {
PATH_CONFIG_VALUE
.get_or_init(PathConfig::new)
.data_dir()
.clone()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn mutex_timeout1() {
assert!(MUTEX_TIMEOUT_SECS() > 0);
}
#[test]
fn io_buf_size1() {
assert!(IO_BUF_SIZE() > 0);
}
}