mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-04-08 03:01:12 -04:00
feat(provider): stage checkpoint provider (#2907)
This commit is contained in:
@@ -15,9 +15,9 @@ pub use traits::{
|
||||
BlockProvider, BlockProviderIdExt, BlockSource, BlockchainTreePendingStateProvider,
|
||||
CanonChainTracker, CanonStateNotification, CanonStateNotificationSender,
|
||||
CanonStateNotifications, CanonStateSubscriptions, EvmEnvProvider, ExecutorFactory,
|
||||
HeaderProvider, PostStateDataProvider, ReceiptProvider, ReceiptProviderIdExt, StateProvider,
|
||||
StateProviderBox, StateProviderFactory, StateRootProvider, TransactionsProvider,
|
||||
WithdrawalsProvider,
|
||||
HeaderProvider, PostStateDataProvider, ReceiptProvider, ReceiptProviderIdExt,
|
||||
StageCheckpointProvider, StateProvider, StateProviderBox, StateProviderFactory,
|
||||
StateRootProvider, TransactionsProvider, WithdrawalsProvider,
|
||||
};
|
||||
|
||||
/// Provider trait implementations.
|
||||
|
||||
@@ -2,7 +2,8 @@ use crate::{
|
||||
providers::state::{historical::HistoricalStateProvider, latest::LatestStateProvider},
|
||||
traits::{BlockSource, ReceiptProvider},
|
||||
BlockHashProvider, BlockNumProvider, BlockProvider, EvmEnvProvider, HeaderProvider,
|
||||
ProviderError, StateProviderBox, TransactionsProvider, WithdrawalsProvider,
|
||||
ProviderError, StageCheckpointProvider, StateProviderBox, TransactionsProvider,
|
||||
WithdrawalsProvider,
|
||||
};
|
||||
use reth_db::{cursor::DbCursorRO, database::Database, tables, transaction::DbTx};
|
||||
use reth_interfaces::Result;
|
||||
@@ -455,6 +456,12 @@ impl<DB: Database> WithdrawalsProvider for ShareableDatabase<DB> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB: Database> StageCheckpointProvider for ShareableDatabase<DB> {
|
||||
fn get_stage_checkpoint(&self, id: StageId) -> Result<Option<StageCheckpoint>> {
|
||||
Ok(get_stage_checkpoint(&self.db.tx()?, id)?)
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB: Database> EvmEnvProvider for ShareableDatabase<DB> {
|
||||
fn fill_env_at(
|
||||
&self,
|
||||
|
||||
@@ -44,3 +44,6 @@ pub use chain::{
|
||||
CanonStateNotification, CanonStateNotificationSender, CanonStateNotifications,
|
||||
CanonStateSubscriptions,
|
||||
};
|
||||
|
||||
mod stage_checkpoint;
|
||||
pub use stage_checkpoint::StageCheckpointProvider;
|
||||
|
||||
9
crates/storage/provider/src/traits/stage_checkpoint.rs
Normal file
9
crates/storage/provider/src/traits/stage_checkpoint.rs
Normal file
@@ -0,0 +1,9 @@
|
||||
use reth_interfaces::Result;
|
||||
use reth_primitives::{stage::StageId, StageCheckpoint};
|
||||
|
||||
/// The trait for fetching stage checkpoint related data.
|
||||
#[auto_impl::auto_impl(&, Arc)]
|
||||
pub trait StageCheckpointProvider: Send + Sync {
|
||||
/// Fetch the checkpoint for the given stage.
|
||||
fn get_stage_checkpoint(&self, id: StageId) -> Result<Option<StageCheckpoint>>;
|
||||
}
|
||||
Reference in New Issue
Block a user