reth_storage_api/prune_checkpoint.rs
1use alloc::vec::Vec;
2use reth_prune_types::{PruneCheckpoint, PruneSegment};
3use reth_storage_errors::provider::ProviderResult;
4
5/// The trait for fetching prune checkpoint related data.
6#[auto_impl::auto_impl(&, Arc)]
7pub trait PruneCheckpointReader: Send + Sync {
8 /// Fetch the prune checkpoint for the given segment.
9 fn get_prune_checkpoint(
10 &self,
11 segment: PruneSegment,
12 ) -> ProviderResult<Option<PruneCheckpoint>>;
13
14 /// Fetch all the prune checkpoints.
15 fn get_prune_checkpoints(&self) -> ProviderResult<Vec<(PruneSegment, PruneCheckpoint)>>;
16}
17
18/// The trait for updating prune checkpoint related data.
19#[auto_impl::auto_impl(&, Arc)]
20pub trait PruneCheckpointWriter: Send + Sync {
21 /// Save prune checkpoint.
22 fn save_prune_checkpoint(
23 &self,
24 segment: PruneSegment,
25 checkpoint: PruneCheckpoint,
26 ) -> ProviderResult<()>;
27}