pub struct CowEngine { /* private fields */ }Expand description
COW read/write engine for vector-addressed clusters.
Implementations§
Source§impl CowEngine
impl CowEngine
Sourcepub fn new(
cluster_size: u32,
vectors_per_cluster: u32,
bytes_per_vector: u32,
) -> Self
pub fn new( cluster_size: u32, vectors_per_cluster: u32, bytes_per_vector: u32, ) -> Self
Create a new COW engine.
§Panics
Panics if vectors_per_cluster is 0 (would cause division by zero on read/write).
Sourcepub fn from_parent(
cluster_count: u32,
cluster_size: u32,
vectors_per_cluster: u32,
bytes_per_vector: u32,
) -> Self
pub fn from_parent( cluster_count: u32, cluster_size: u32, vectors_per_cluster: u32, bytes_per_vector: u32, ) -> Self
Create a COW engine initialized from a parent (all clusters point to parent).
§Panics
Panics if vectors_per_cluster is 0 (would cause division by zero on read/write).
Sourcepub fn read_vector(
&self,
vector_id: u64,
file: &File,
parent: Option<&File>,
) -> Result<Vec<u8>, RvfError>
pub fn read_vector( &self, vector_id: u64, file: &File, parent: Option<&File>, ) -> Result<Vec<u8>, RvfError>
Read a vector by ID. Returns byte slice of vector data.
Sourcepub fn read_cluster(
&self,
cluster_id: u32,
file: &File,
parent: Option<&File>,
) -> Result<Vec<u8>, RvfError>
pub fn read_cluster( &self, cluster_id: u32, file: &File, parent: Option<&File>, ) -> Result<Vec<u8>, RvfError>
Read an entire cluster. Returns cluster data.
Sourcepub fn write_vector(
&mut self,
vector_id: u64,
data: &[u8],
) -> Result<(), RvfError>
pub fn write_vector( &mut self, vector_id: u64, data: &[u8], ) -> Result<(), RvfError>
Write a vector. Handles COW: copies parent slab if inherited.
Writes are buffered for coalescing. Call flush_writes to commit.
Sourcepub fn flush_writes(
&mut self,
file: &mut File,
parent: Option<&File>,
) -> Result<Vec<WitnessEvent>, RvfError>
pub fn flush_writes( &mut self, file: &mut File, parent: Option<&File>, ) -> Result<Vec<WitnessEvent>, RvfError>
Flush write coalescing buffer. Performs actual slab copies for inherited clusters and applies all pending mutations.
Sourcepub fn freeze(&mut self, epoch: u32) -> Result<(), RvfError>
pub fn freeze(&mut self, epoch: u32) -> Result<(), RvfError>
Snapshot-freeze: set epoch, prevent further writes to this generation.
Sourcepub fn snapshot_epoch(&self) -> u32
pub fn snapshot_epoch(&self) -> u32
Get the snapshot epoch.
Auto Trait Implementations§
impl Freeze for CowEngine
impl RefUnwindSafe for CowEngine
impl Send for CowEngine
impl Sync for CowEngine
impl Unpin for CowEngine
impl UnwindSafe for CowEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more