mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
style: builder style segment set (#5209)
This commit is contained in:
@ -914,34 +914,41 @@ impl<Ext: RethCliExt> NodeCommand<Ext> {
|
|||||||
Ok(pipeline)
|
Ok(pipeline)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Builds a [Pruner] with the given config.
|
||||||
fn build_pruner<DB: Database>(
|
fn build_pruner<DB: Database>(
|
||||||
&self,
|
&self,
|
||||||
config: &PruneConfig,
|
config: &PruneConfig,
|
||||||
db: DB,
|
db: DB,
|
||||||
highest_snapshots_rx: HighestSnapshotsTracker,
|
highest_snapshots_rx: HighestSnapshotsTracker,
|
||||||
) -> Pruner<DB> {
|
) -> Pruner<DB> {
|
||||||
let mut segments = SegmentSet::new();
|
let segments = SegmentSet::default()
|
||||||
|
// Receipts
|
||||||
if let Some(mode) = config.segments.receipts {
|
.segment_opt(config.segments.receipts.map(reth_prune::segments::Receipts::new))
|
||||||
segments = segments.add_segment(reth_prune::segments::Receipts::new(mode));
|
// Receipts by logs
|
||||||
}
|
.segment_opt((!config.segments.receipts_log_filter.is_empty()).then(|| {
|
||||||
if !config.segments.receipts_log_filter.is_empty() {
|
reth_prune::segments::ReceiptsByLogs::new(
|
||||||
segments = segments.add_segment(reth_prune::segments::ReceiptsByLogs::new(
|
config.segments.receipts_log_filter.clone(),
|
||||||
config.segments.receipts_log_filter.clone(),
|
)
|
||||||
));
|
}))
|
||||||
}
|
// Transaction lookup
|
||||||
if let Some(mode) = config.segments.transaction_lookup {
|
.segment_opt(
|
||||||
segments = segments.add_segment(reth_prune::segments::TransactionLookup::new(mode));
|
config
|
||||||
}
|
.segments
|
||||||
if let Some(mode) = config.segments.sender_recovery {
|
.transaction_lookup
|
||||||
segments = segments.add_segment(reth_prune::segments::SenderRecovery::new(mode));
|
.map(reth_prune::segments::TransactionLookup::new),
|
||||||
}
|
)
|
||||||
if let Some(mode) = config.segments.account_history {
|
// Sender recovery
|
||||||
segments = segments.add_segment(reth_prune::segments::AccountHistory::new(mode));
|
.segment_opt(
|
||||||
}
|
config.segments.sender_recovery.map(reth_prune::segments::SenderRecovery::new),
|
||||||
if let Some(mode) = config.segments.storage_history {
|
)
|
||||||
segments = segments.add_segment(reth_prune::segments::StorageHistory::new(mode));
|
// Account history
|
||||||
}
|
.segment_opt(
|
||||||
|
config.segments.account_history.map(reth_prune::segments::AccountHistory::new),
|
||||||
|
)
|
||||||
|
// Storage history
|
||||||
|
.segment_opt(
|
||||||
|
config.segments.storage_history.map(reth_prune::segments::StorageHistory::new),
|
||||||
|
);
|
||||||
|
|
||||||
Pruner::new(
|
Pruner::new(
|
||||||
db,
|
db,
|
||||||
|
|||||||
@ -15,11 +15,19 @@ impl<DB: Database> SegmentSet<DB> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Adds new [Segment] to collection.
|
/// Adds new [Segment] to collection.
|
||||||
pub fn add_segment<S: Segment<DB> + 'static>(mut self, segment: S) -> Self {
|
pub fn segment<S: Segment<DB> + 'static>(mut self, segment: S) -> Self {
|
||||||
self.inner.push(Arc::new(segment));
|
self.inner.push(Arc::new(segment));
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Adds new [Segment] to collection if it's [Some].
|
||||||
|
pub fn segment_opt<S: Segment<DB> + 'static>(self, segment: Option<S>) -> Self {
|
||||||
|
if let Some(segment) = segment {
|
||||||
|
return self.segment(segment)
|
||||||
|
}
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Consumes [SegmentSet] and returns a [Vec].
|
/// Consumes [SegmentSet] and returns a [Vec].
|
||||||
pub fn into_vec(self) -> Vec<Arc<dyn Segment<DB>>> {
|
pub fn into_vec(self) -> Vec<Arc<dyn Segment<DB>>> {
|
||||||
self.inner
|
self.inner
|
||||||
|
|||||||
Reference in New Issue
Block a user