Skip to main content

BlockProvider

Trait BlockProvider 

Source
pub trait BlockProvider:
    Send
    + Sync
    + 'static {
    type GetNextBlockFut<'a>: Future<Output = OptionalBlockStuff> + Send + 'a;
    type GetBlockFut<'a>: Future<Output = OptionalBlockStuff> + Send + 'a;
    type CleanupFut<'a>: Future<Output = Result<()>> + Send + 'a;

    // Required methods
    fn get_next_block<'a>(
        &'a self,
        prev_block_id: &'a BlockId,
    ) -> Self::GetNextBlockFut<'a>;
    fn get_block<'a>(
        &'a self,
        block_id_relation: &'a BlockIdRelation,
    ) -> Self::GetBlockFut<'a>;
    fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>;
}
Expand description

Block provider MUST validate the block before returning it.

Required Associated Types§

Source

type GetNextBlockFut<'a>: Future<Output = OptionalBlockStuff> + Send + 'a

Source

type GetBlockFut<'a>: Future<Output = OptionalBlockStuff> + Send + 'a

Source

type CleanupFut<'a>: Future<Output = Result<()>> + Send + 'a

Required Methods§

Source

fn get_next_block<'a>( &'a self, prev_block_id: &'a BlockId, ) -> Self::GetNextBlockFut<'a>

Wait for the next block. Mostly used for masterchain blocks.

Source

fn get_block<'a>( &'a self, block_id_relation: &'a BlockIdRelation, ) -> Self::GetBlockFut<'a>

Get the exact block. Provider must return the requested block.

Source

fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>

Clear resources until (and including) the specified masterchain block seqno.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T0, T1> BlockProvider for (T0, T1)

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>

Source§

fn get_next_block<'a>( &'a self, prev_block_id: &'a BlockId, ) -> Self::GetNextBlockFut<'a>

Source§

fn get_block<'a>( &'a self, block_id_relation: &'a BlockIdRelation, ) -> Self::GetBlockFut<'a>

Source§

fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>

Source§

impl<T0, T1, T2> BlockProvider for (T0, T1, T2)

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>

Source§

fn get_next_block<'a>( &'a self, prev_block_id: &'a BlockId, ) -> Self::GetNextBlockFut<'a>

Source§

fn get_block<'a>( &'a self, block_id_relation: &'a BlockIdRelation, ) -> Self::GetBlockFut<'a>

Source§

fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>

Source§

impl<T0, T1, T2, T3> BlockProvider for (T0, T1, T2, T3)

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>

Source§

fn get_next_block<'a>( &'a self, prev_block_id: &'a BlockId, ) -> Self::GetNextBlockFut<'a>

Source§

fn get_block<'a>( &'a self, block_id_relation: &'a BlockIdRelation, ) -> Self::GetBlockFut<'a>

Source§

fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>

Source§

impl<T0, T1, T2, T3, T4> BlockProvider for (T0, T1, T2, T3, T4)

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>

Source§

fn get_next_block<'a>( &'a self, prev_block_id: &'a BlockId, ) -> Self::GetNextBlockFut<'a>

Source§

fn get_block<'a>( &'a self, block_id_relation: &'a BlockIdRelation, ) -> Self::GetBlockFut<'a>

Source§

fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>

Source§

impl<T: BlockProvider> BlockProvider for Box<T>

Source§

type GetNextBlockFut<'a> = <T as BlockProvider>::GetNextBlockFut<'a>

Source§

type GetBlockFut<'a> = <T as BlockProvider>::GetBlockFut<'a>

Source§

type CleanupFut<'a> = <T as BlockProvider>::CleanupFut<'a>

Source§

fn get_next_block<'a>( &'a self, prev_block_id: &'a BlockId, ) -> Self::GetNextBlockFut<'a>

Source§

fn get_block<'a>( &'a self, block_id_relation: &'a BlockIdRelation, ) -> Self::GetBlockFut<'a>

Source§

fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>

Source§

impl<T: BlockProvider> BlockProvider for Arc<T>

Source§

type GetNextBlockFut<'a> = <T as BlockProvider>::GetNextBlockFut<'a>

Source§

type GetBlockFut<'a> = <T as BlockProvider>::GetBlockFut<'a>

Source§

type CleanupFut<'a> = <T as BlockProvider>::CleanupFut<'a>

Source§

fn get_next_block<'a>( &'a self, prev_block_id: &'a BlockId, ) -> Self::GetNextBlockFut<'a>

Source§

fn get_block<'a>( &'a self, block_id_relation: &'a BlockIdRelation, ) -> Self::GetBlockFut<'a>

Source§

fn cleanup_until(&self, mc_seqno: u32) -> Self::CleanupFut<'_>

Implementors§

Source§

impl BlockProvider for ArchiveBlockProvider

Source§

impl BlockProvider for BlockchainBlockProvider

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = BlockchainBlockProviderCleanupFut<'a>

Source§

impl BlockProvider for BoxBlockProvider

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>

Source§

impl BlockProvider for EmptyBlockProvider

Source§

impl BlockProvider for StorageBlockProvider

Source§

impl<T1: BlockProvider, T2: BlockProvider> BlockProvider for ChainBlockProvider<T1, T2>

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>

Source§

impl<T1: BlockProvider, T2: BlockProvider> BlockProvider for CycleBlockProvider<T1, T2>

Source§

type GetNextBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type GetBlockFut<'a> = Pin<Box<dyn Future<Output = Option<Result<WithArchiveData<BlockStuff>, Error>>> + Send + 'a>>

Source§

type CleanupFut<'a> = Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>

Source§

impl<T: BlockProvider> BlockProvider for RetryBlockProvider<T>