mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: make StaticFileProvider generic over NodePrimitives (#12565)
This commit is contained in:
@ -76,8 +76,11 @@ impl PrunerBuilder {
|
||||
/// Builds a [Pruner] from the current configuration with the given provider factory.
|
||||
pub fn build_with_provider_factory<PF>(self, provider_factory: PF) -> Pruner<PF::ProviderRW, PF>
|
||||
where
|
||||
PF: DatabaseProviderFactory<ProviderRW: PruneCheckpointWriter + BlockReader>
|
||||
+ StaticFileProviderFactory,
|
||||
PF: DatabaseProviderFactory<
|
||||
ProviderRW: PruneCheckpointWriter + BlockReader + StaticFileProviderFactory,
|
||||
> + StaticFileProviderFactory<
|
||||
Primitives = <PF::ProviderRW as StaticFileProviderFactory>::Primitives,
|
||||
>,
|
||||
{
|
||||
let segments =
|
||||
SegmentSet::from_components(provider_factory.static_file_provider(), self.segments);
|
||||
@ -93,10 +96,16 @@ impl PrunerBuilder {
|
||||
}
|
||||
|
||||
/// Builds a [Pruner] from the current configuration with the given static file provider.
|
||||
pub fn build<Provider>(self, static_file_provider: StaticFileProvider) -> Pruner<Provider, ()>
|
||||
pub fn build<Provider>(
|
||||
self,
|
||||
static_file_provider: StaticFileProvider<Provider::Primitives>,
|
||||
) -> Pruner<Provider, ()>
|
||||
where
|
||||
Provider:
|
||||
DBProvider<Tx: DbTxMut> + BlockReader + PruneCheckpointWriter + TransactionsProvider,
|
||||
Provider: StaticFileProviderFactory
|
||||
+ DBProvider<Tx: DbTxMut>
|
||||
+ BlockReader
|
||||
+ PruneCheckpointWriter
|
||||
+ TransactionsProvider,
|
||||
{
|
||||
let segments = SegmentSet::<Provider>::from_components(static_file_provider, self.segments);
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ use crate::segments::{
|
||||
use reth_db::transaction::DbTxMut;
|
||||
use reth_provider::{
|
||||
providers::StaticFileProvider, BlockReader, DBProvider, PruneCheckpointWriter,
|
||||
TransactionsProvider,
|
||||
StaticFileProviderFactory, TransactionsProvider,
|
||||
};
|
||||
use reth_prune_types::PruneModes;
|
||||
|
||||
@ -45,12 +45,16 @@ impl<Provider> SegmentSet<Provider> {
|
||||
|
||||
impl<Provider> SegmentSet<Provider>
|
||||
where
|
||||
Provider: DBProvider<Tx: DbTxMut> + TransactionsProvider + PruneCheckpointWriter + BlockReader,
|
||||
Provider: StaticFileProviderFactory
|
||||
+ DBProvider<Tx: DbTxMut>
|
||||
+ TransactionsProvider
|
||||
+ PruneCheckpointWriter
|
||||
+ BlockReader,
|
||||
{
|
||||
/// Creates a [`SegmentSet`] from an existing components, such as [`StaticFileProvider`] and
|
||||
/// [`PruneModes`].
|
||||
pub fn from_components(
|
||||
static_file_provider: StaticFileProvider,
|
||||
static_file_provider: StaticFileProvider<Provider::Primitives>,
|
||||
prune_modes: PruneModes,
|
||||
) -> Self {
|
||||
let PruneModes {
|
||||
|
||||
@ -12,7 +12,7 @@ use reth_db::{
|
||||
tables,
|
||||
transaction::DbTxMut,
|
||||
};
|
||||
use reth_provider::{providers::StaticFileProvider, DBProvider};
|
||||
use reth_provider::{providers::StaticFileProvider, DBProvider, StaticFileProviderFactory};
|
||||
use reth_prune_types::{
|
||||
PruneLimiter, PruneMode, PruneProgress, PrunePurpose, PruneSegment, SegmentOutput,
|
||||
SegmentOutputCheckpoint,
|
||||
@ -24,17 +24,19 @@ use tracing::trace;
|
||||
const HEADER_TABLES_TO_PRUNE: usize = 3;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Headers {
|
||||
static_file_provider: StaticFileProvider,
|
||||
pub struct Headers<N> {
|
||||
static_file_provider: StaticFileProvider<N>,
|
||||
}
|
||||
|
||||
impl Headers {
|
||||
pub const fn new(static_file_provider: StaticFileProvider) -> Self {
|
||||
impl<N> Headers<N> {
|
||||
pub const fn new(static_file_provider: StaticFileProvider<N>) -> Self {
|
||||
Self { static_file_provider }
|
||||
}
|
||||
}
|
||||
|
||||
impl<Provider: DBProvider<Tx: DbTxMut>> Segment<Provider> for Headers {
|
||||
impl<Provider: StaticFileProviderFactory + DBProvider<Tx: DbTxMut>> Segment<Provider>
|
||||
for Headers<Provider::Primitives>
|
||||
{
|
||||
fn segment(&self) -> PruneSegment {
|
||||
PruneSegment::Headers
|
||||
}
|
||||
|
||||
@ -5,25 +5,29 @@ use crate::{
|
||||
use reth_db::transaction::DbTxMut;
|
||||
use reth_provider::{
|
||||
errors::provider::ProviderResult, providers::StaticFileProvider, BlockReader, DBProvider,
|
||||
PruneCheckpointWriter, TransactionsProvider,
|
||||
PruneCheckpointWriter, StaticFileProviderFactory, TransactionsProvider,
|
||||
};
|
||||
use reth_prune_types::{PruneCheckpoint, PruneMode, PrunePurpose, PruneSegment, SegmentOutput};
|
||||
use reth_static_file_types::StaticFileSegment;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Receipts {
|
||||
static_file_provider: StaticFileProvider,
|
||||
pub struct Receipts<N> {
|
||||
static_file_provider: StaticFileProvider<N>,
|
||||
}
|
||||
|
||||
impl Receipts {
|
||||
pub const fn new(static_file_provider: StaticFileProvider) -> Self {
|
||||
impl<N> Receipts<N> {
|
||||
pub const fn new(static_file_provider: StaticFileProvider<N>) -> Self {
|
||||
Self { static_file_provider }
|
||||
}
|
||||
}
|
||||
|
||||
impl<Provider> Segment<Provider> for Receipts
|
||||
impl<Provider> Segment<Provider> for Receipts<Provider::Primitives>
|
||||
where
|
||||
Provider: DBProvider<Tx: DbTxMut> + PruneCheckpointWriter + TransactionsProvider + BlockReader,
|
||||
Provider: StaticFileProviderFactory
|
||||
+ DBProvider<Tx: DbTxMut>
|
||||
+ PruneCheckpointWriter
|
||||
+ TransactionsProvider
|
||||
+ BlockReader,
|
||||
{
|
||||
fn segment(&self) -> PruneSegment {
|
||||
PruneSegment::Receipts
|
||||
|
||||
@ -4,7 +4,10 @@ use crate::{
|
||||
PrunerError,
|
||||
};
|
||||
use reth_db::{tables, transaction::DbTxMut};
|
||||
use reth_provider::{providers::StaticFileProvider, BlockReader, DBProvider, TransactionsProvider};
|
||||
use reth_provider::{
|
||||
providers::StaticFileProvider, BlockReader, DBProvider, StaticFileProviderFactory,
|
||||
TransactionsProvider,
|
||||
};
|
||||
use reth_prune_types::{
|
||||
PruneMode, PruneProgress, PrunePurpose, PruneSegment, SegmentOutput, SegmentOutputCheckpoint,
|
||||
};
|
||||
@ -12,19 +15,20 @@ use reth_static_file_types::StaticFileSegment;
|
||||
use tracing::trace;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Transactions {
|
||||
static_file_provider: StaticFileProvider,
|
||||
pub struct Transactions<N> {
|
||||
static_file_provider: StaticFileProvider<N>,
|
||||
}
|
||||
|
||||
impl Transactions {
|
||||
pub const fn new(static_file_provider: StaticFileProvider) -> Self {
|
||||
impl<N> Transactions<N> {
|
||||
pub const fn new(static_file_provider: StaticFileProvider<N>) -> Self {
|
||||
Self { static_file_provider }
|
||||
}
|
||||
}
|
||||
|
||||
impl<Provider> Segment<Provider> for Transactions
|
||||
impl<Provider> Segment<Provider> for Transactions<Provider::Primitives>
|
||||
where
|
||||
Provider: DBProvider<Tx: DbTxMut> + TransactionsProvider + BlockReader,
|
||||
Provider:
|
||||
DBProvider<Tx: DbTxMut> + TransactionsProvider + BlockReader + StaticFileProviderFactory,
|
||||
{
|
||||
fn segment(&self) -> PruneSegment {
|
||||
PruneSegment::Transactions
|
||||
|
||||
Reference in New Issue
Block a user