Skip to main content

OverlayView

Struct OverlayView 

Source
pub struct OverlayView { /* private fields */ }
Expand description

A pinned base snapshot plus an uncommitted key overlay.

Clone is cheap for the base (Arc) and copies the overlay map; callers that only read should share one instance behind an Arc.

Implementations§

Source§

impl OverlayView

Source

pub fn new(base: Arc<ReadView>) -> Self

Wrap a pinned snapshot with an empty overlay.

Source

pub fn with_buffer( base: Arc<ReadView>, buffer: BTreeMap<Vec<u8>, Option<Vec<u8>>>, ) -> Self

Wrap a pinned snapshot with a pre-existing overlay buffer.

Source

pub fn base(&self) -> &Arc<ReadView> ⓘ

The pinned base snapshot underneath this overlay.

Source

pub fn buffer(&self) -> &BTreeMap<Vec<u8>, Option<Vec<u8>>>

The current overlay buffer (read-buffer-first).

Source

pub fn commit_index(&self) -> u64

Commit index this view reads its committed base at.

Source

pub fn cancellation(&self) -> ReadCancellation

Cancellation handle shared with the base snapshot.

Source

pub fn put(&mut self, key: Vec<u8>, value: Vec<u8>)

Stage a write in the overlay.

Source

pub fn delete(&mut self, key: Vec<u8>)

Stage a tombstone in the overlay.

Source

pub fn apply_ops(&mut self, ops: &[Op])

Fold a batch of LMPG ops into the overlay. History is irrelevant to reads, so Put/Set become live values and Del/Purge tombstones.

Source

pub fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, StorageError>

Read one key: overlay first, then the pinned base.

§Errors

Returns the underlying storage error from the base read.

Source

pub fn range_prefix( &self, prefix: &[u8], ) -> Result<Vec<(Vec<u8>, Vec<u8>)>, StorageError>

Materialize every key/value with key starting with prefix, merging the overlay over the base (overlay wins; tombstones hide base rows).

§Errors

Returns the underlying storage error from the base scan.

Source

pub fn range_keys( &self, start: &[u8], end: &[u8], ) -> Result<Vec<Vec<u8>>, StorageError>

Materialize the keys with start <= key < end, merging the overlay over the base (overlay wins; tombstones hidden). Values are never read, so a keys-only scan does not pay for large payloads.

§Errors

Returns the underlying storage error from the base scan.

Source

pub fn range( &self, start: &[u8], end: &[u8], ) -> Result<Vec<(Vec<u8>, Vec<u8>)>, StorageError>

Materialize every key/value with start <= key < end, merging the overlay over the base. An empty end is unbounded above.

§Errors

Returns the underlying storage error from the base scan.

Trait Implementations§

Source§

impl Clone for OverlayView

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OverlayView

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.