pub(crate) mod store;
use serde::{Deserialize, Serialize};
use std::num::{NonZero, NonZeroUsize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockDBOptions {
chunk_size: NonZeroUsize,
max_file_size: NonZeroUsize,
}
impl Default for BlockDBOptions {
fn default() -> Self {
unsafe {
Self {
chunk_size: NonZero::new_unchecked(4_096),
max_file_size: NonZero::new_unchecked(4_096 * 1_000_000),
}
}
}
}
impl BlockDBOptions {
pub fn chunk_size(&self) -> usize {
usize::from(self.chunk_size)
}
pub fn max_file_size(&self) -> usize {
usize::from(self.max_file_size)
}
}
#[derive(Debug, Default)]
pub struct BlockDBOptionsBuilder {
pub chunk_size: Option<NonZeroUsize>,
pub max_file_size: Option<NonZeroUsize>,
}
impl BlockDBOptionsBuilder {
pub fn chunk_size(mut self, chunk_size: NonZeroUsize) -> Self {
self.chunk_size = Some(chunk_size);
self
}
pub fn max_file_size(mut self, max_file_size: NonZeroUsize) -> Self {
self.max_file_size = Some(max_file_size);
self
}
pub fn build(self) -> BlockDBOptions {
unsafe {
BlockDBOptions {
chunk_size: self.chunk_size.unwrap_or(NonZero::new_unchecked(4_096)),
max_file_size: self
.max_file_size
.unwrap_or(NonZero::new_unchecked(4_096 * 1_000_000)),
}
}
}
}