Skip to main content

LmdbStorage

Struct LmdbStorage 

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

Content-addressed LMDB storage.

Uses heed (LMDB wrapper) for memory-mapped, transactional chunk storage. Keys are 32-byte XorName addresses, values are raw chunk bytes.

Implementations§

Source§

impl LmdbStorage

Source

pub async fn new(config: LmdbStorageConfig) -> Result<Self>

Create a new LMDB storage instance.

Opens (or creates) an LMDB environment at {root_dir}/chunks.mdb/.

§Errors

Returns an error if the LMDB environment cannot be opened.

Source

pub async fn put(&self, address: &XorName, content: &[u8]) -> Result<bool>

Store a chunk.

§Arguments
  • address - Content address (should be BLAKE3 of content)
  • content - Chunk data
§Returns

Returns true if the chunk was newly stored, false if it already existed.

§Errors

Returns an error if the write fails or content doesn’t match address.

Source

pub async fn get(&self, address: &XorName) -> Result<Option<Vec<u8>>>

Retrieve a chunk.

§Arguments
  • address - Content address to retrieve
§Returns

Returns Some(content) if found, None if not found.

§Errors

Returns an error if read fails or verification fails.

Source

pub fn exists(&self, address: &XorName) -> Result<bool>

Check if a chunk exists.

§Errors

Returns an error if the LMDB read transaction fails.

Source

pub async fn delete(&self, address: &XorName) -> Result<bool>

Delete a chunk.

§Errors

Returns an error if deletion fails.

Source

pub fn stats(&self) -> StorageStats

Get storage statistics.

Source

pub fn current_chunks(&self) -> Result<u64>

Return the number of chunks currently stored, queried from LMDB metadata.

This is an O(1) read of the B-tree page header — not a full scan.

§Errors

Returns an error if the LMDB read transaction fails.

Source

pub fn compute_address(content: &[u8]) -> XorName

Compute content address (BLAKE3 hash).

Source

pub fn root_dir(&self) -> &Path

Get the root directory.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more