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}