use std::path::Path;
use prikk_error::Result;
use super::directory::MutationRoot;
use super::unsupported_mutation;
use crate::fsutil::contract::DurabilityContract;
pub(crate) struct NoDurability;
impl DurabilityContract for NoDurability {
fn atomic_replace(&self, root: &MutationRoot, relative: &Path, bytes: &[u8]) -> Result<()> {
let _ = (root, relative, bytes);
unsupported_mutation()
}
fn durable_append(&self, root: &MutationRoot, relative: &Path, bytes: &[u8]) -> Result<()> {
let _ = (root, relative, bytes);
unsupported_mutation()
}
fn durable_truncate(&self, root: &MutationRoot, relative: &Path, len: u64) -> Result<()> {
let _ = (root, relative, len);
unsupported_mutation()
}
fn durable_truncate_to_empty(&self, root: &MutationRoot, relative: &Path) -> Result<()> {
let _ = (root, relative);
unsupported_mutation()
}
fn create_exclusive(
&self,
root: &MutationRoot,
relative: &Path,
bytes: &[u8],
) -> std::io::Result<()> {
let _ = (root, relative, bytes);
Err(std::io::Error::new(
std::io::ErrorKind::Unsupported,
"repository mutation requires Linux, macOS, or Windows anchored filesystem primitives",
))
}
fn set_permission_bits(&self, root: &MutationRoot, relative: &Path, mode: u32) -> Result<()> {
let _ = (root, relative, mode);
unsupported_mutation()
}
fn remove_if_present(&self, root: &MutationRoot, relative: &Path) -> Result<bool> {
let _ = (root, relative);
unsupported_mutation()
}
fn ensure_directory(&self, root: &MutationRoot, relative: &Path) -> Result<()> {
let _ = (root, relative);
unsupported_mutation()
}
fn durable_directory_entry(&self, root: &MutationRoot, relative: &Path) -> Result<()> {
let _ = (root, relative);
unsupported_mutation()
}
}