cnidarium

Struct TempStorage

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

A Storage instance backed by a tempfile::TempDir for testing.

The TempDir handle is bundled into the TempStorage, so the temporary directory is cleaned up when the TempStorage instance is dropped.

Implementations§

Source§

impl TempStorage

Source

pub async fn new() -> Result<Self>

Source

pub async fn new_with_prefixes(prefixes: Vec<String>) -> Result<Self>

Methods from Deref<Target = Storage>§

Source

pub fn latest_version(&self) -> Version

Returns the latest version (block height) of the tree recorded by the Storage.

If the tree is empty and has not been initialized, returns u64::MAX.

Source

pub fn subscribe(&self) -> Receiver<Snapshot>

Returns a [watch::Receiver] that can be used to subscribe to new state versions.

Source

pub fn subscribe_changes(&self) -> Receiver<(Version, Arc<Cache>)>

Returns a [watch::Receiver] that can be used to subscribe to state changes.

Source

pub fn latest_snapshot(&self) -> Snapshot

Returns a new Snapshot on top of the latest version of the tree.

Source

pub fn snapshot(&self, version: Version) -> Option<Snapshot>

Fetches the Snapshot corresponding to the supplied jmt::Version from the [SnapshotCache]. Returns None if no match was found.

Source

pub async fn prepare_commit( &self, delta: StateDelta<Snapshot>, ) -> Result<StagedWriteBatch>

Prepares a commit for the provided StateDelta, returning a StagedWriteBatch. The batch can be committed to the database using the Storage::commit_batch method.

Source

pub async fn commit(&self, delta: StateDelta<Snapshot>) -> Result<RootHash>

Commits the provided StateDelta to persistent storage as the latest version of the chain state.

Source

pub fn commit_batch(&self, batch: StagedWriteBatch) -> Result<RootHash>

Commits the supplied StagedWriteBatch to persistent storage.

§Migrations

In the case of chain state migrations we need to commit the new state without incrementing the version. If perform_migration is true the snapshot will not be written to the snapshot cache, and no subscribers will be notified. Substore versions will not be updated.

Source

pub async fn commit_in_place( &self, delta: StateDelta<Snapshot>, ) -> Result<RootHash>

Available on crate feature migration only.

Commit the provided StateDelta to persistent storage without increasing the version of the chain state, and skips the snapshot cache update.

Trait Implementations§

Source§

impl AsRef<Storage> for TempStorage

Source§

fn as_ref(&self) -> &Storage

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Deref for TempStorage

Source§

type Target = Storage

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

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.

§

impl<T> Instrument for T

§

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

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

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

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
Available on non-bootstrap only.
The target type on which the method may be called.
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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