mod db;
mod flush_epoch;
mod heap;
mod metadata_store;
pub use crate::db::{open_default, Batch, Config, Db};
pub use inline_array::InlineArray;
use crate::flush_epoch::{FlushEpoch, FlushEpochGuard};
pub type CompareAndSwapResult = std::io::Result<
std::result::Result<CompareAndSwapSuccess, CompareAndSwapError>,
>;
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct CompareAndSwapError {
pub current: Option<InlineArray>,
pub proposed: Option<InlineArray>,
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct CompareAndSwapSuccess {
pub new_value: Option<InlineArray>,
pub previous_value: Option<InlineArray>,
}
impl std::fmt::Display for CompareAndSwapError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Compare and swap conflict")
}
}
impl std::error::Error for CompareAndSwapError {}
#[derive(Debug, Clone, Copy, serde::Serialize, serde::Deserialize)]
struct NodeId(u64);