pub struct Storage { /* private fields */ }
Expand description

The storage component.

Implementations§

source§

impl Storage

source

pub fn new( cfg: &WithDir<Config>, hard_reset_to_start_of_era: Option<EraId>, protocol_version: ProtocolVersion, activation_era: EraId, network_name: &str, max_ttl: MaxTtl, recent_era_count: u64, registry: Option<&Registry>, force_resync: bool ) -> Result<Self, FatalStorageError>

Creates a new storage component.

source

pub fn put_deploy(&self, deploy: &Deploy) -> Result<bool, FatalStorageError>

Put a single deploy into storage.

source

pub fn read_block( &self, block_hash: &BlockHash ) -> Result<Option<Block>, FatalStorageError>

Retrieves a block by hash.

source

pub fn read_highest_block(&self) -> Result<Option<Block>, FatalStorageError>

Gets the highest block.

source

pub fn read_highest_block_header( &self ) -> Result<Option<BlockHeader>, FatalStorageError>

Retrieves the highest block header from the storage, if one exists.

source

pub fn write_block(&mut self, block: &Block) -> Result<bool, FatalStorageError>

Writes a block to storage, updating indices as necessary.

Returns Ok(true) if the block has been successfully written, Ok(false) if a part of it couldn’t be written because it already existed, and Err(_) if there was an error.

source

pub fn write_complete_block( &mut self, block: &Block ) -> Result<bool, FatalStorageError>

Writes a block to storage and marks it as complete, updating indices as necessary.

Returns Ok(true) if the block has been successfully written, Ok(false) if a part of it couldn’t be written because it already existed, and Err(_) if there was an error. This function guarantees that either both the block storing and the completed_blocks index update were successful or that the entire operation was reverted.

source

pub fn read_highest_block_height(&self) -> Option<u64>

Retrieves the highest block header from the storage, if one exists.

source

pub fn read_block_header_by_height( &self, height: u64, only_from_available_block_range: bool ) -> Result<Option<BlockHeader>, FatalStorageError>

Retrieves a single block header by height by looking it up in the index and returning it.

source

pub fn read_block_header( &self, block_hash: &BlockHash ) -> Result<Option<BlockHeader>, FatalStorageError>

Retrieves a single block header by hash.

source

pub fn read_block_by_height( &self, height: u64 ) -> Result<Option<Block>, FatalStorageError>

Retrieves single block by height by looking it up in the index and returning it.

source

pub fn read_block_and_metadata_by_height( &self, height: u64 ) -> Result<Option<BlockWithMetadata>, FatalStorageError>

Retrieves a block by height, together with all stored block signatures.

Returns None if the block is not stored, or if no block signatures are stored for it.

source

pub fn read_deploy_by_hash( &self, deploy_hash: &DeployHash ) -> Result<Option<Deploy>, FatalStorageError>

Directly returns a deploy from internal store.

Trait Implementations§

source§

impl DataSize for Storage

source§

const IS_DYNAMIC: bool = true

If true, the type has a heap size that can vary at runtime, depending on the actual value.
source§

const STATIC_HEAP_SIZE: usize = 0usize

The amount of space a value of the type always occupies. If IS_DYNAMIC is false, this is the total amount of heap memory occupied by the value. Otherwise this is a lower bound.
source§

fn estimate_heap_size(&self) -> usize

Estimates the size of heap memory taken up by this value. Read more
source§

fn estimate_detailed_heap_size(&self) -> MemUsageNode

Create a tree of memory estimations. Read more
source§

impl Debug for Storage

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Storage

§

impl !Send for Storage

§

impl !Sync for Storage

§

impl Unpin for Storage

§

impl !UnwindSafe for Storage

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
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> 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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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

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
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