#[derive(Debug, Clone, bitcode::Encode, bitcode::Decode)]
pub struct Conf {
pub data_path: String,
pub cache_size: Option<usize>,
pub compression: Option<String>,
pub journal_compression: Option<String>,
pub manual_journal_persist: Option<bool>,
pub worker_threads: Option<usize>,
pub max_journaling_size: Option<usize>,
pub max_cached_files: Option<usize>,
}
impl Conf {
#[inline]
pub fn new(data_path: impl Into<String>) -> Self {
Self {
data_path: data_path.into(),
..Default::default()
}
}
}
impl Default for Conf {
fn default() -> Self {
Self {
data_path: "./data".to_string(),
cache_size: Some(512 * 1024 * 1024),
compression: Some("lz4".to_string()),
journal_compression: Some("none".to_string()),
manual_journal_persist: Some(false),
worker_threads: None,
max_journaling_size: None,
max_cached_files: None,
}
}
}
#[inline]
pub fn parse_compression_type(
comp: Option<&str>,
default: fjall::CompressionType,
) -> fjall::CompressionType {
if let Some(s) = comp {
let trimmed = s.trim();
if trimmed.eq_ignore_ascii_case("none")
|| trimmed.eq_ignore_ascii_case("off")
|| trimmed.eq_ignore_ascii_case("disabled")
|| trimmed.eq_ignore_ascii_case("false")
|| trimmed == "0"
{
fjall::CompressionType::None
} else if trimmed.eq_ignore_ascii_case("lz4")
|| trimmed.eq_ignore_ascii_case("on")
|| trimmed.eq_ignore_ascii_case("enabled")
|| trimmed.eq_ignore_ascii_case("true")
|| trimmed == "1"
{
fjall::CompressionType::Lz4
} else {
default
}
} else {
default
}
}