reth_storage_api/
stage_checkpoint.rs
1use alloc::{string::String, vec::Vec};
2use alloy_primitives::BlockNumber;
3use reth_stages_types::{StageCheckpoint, StageId};
4use reth_storage_errors::provider::ProviderResult;
5
6#[auto_impl::auto_impl(&, Arc)]
8pub trait StageCheckpointReader: Send + Sync {
9 fn get_stage_checkpoint(&self, id: StageId) -> ProviderResult<Option<StageCheckpoint>>;
11
12 fn get_stage_checkpoint_progress(&self, id: StageId) -> ProviderResult<Option<Vec<u8>>>;
14
15 fn get_all_checkpoints(&self) -> ProviderResult<Vec<(String, StageCheckpoint)>>;
18}
19
20#[auto_impl::auto_impl(&, Arc)]
22pub trait StageCheckpointWriter: Send + Sync {
23 fn save_stage_checkpoint(&self, id: StageId, checkpoint: StageCheckpoint)
25 -> ProviderResult<()>;
26
27 fn save_stage_checkpoint_progress(
29 &self,
30 id: StageId,
31 checkpoint: Vec<u8>,
32 ) -> ProviderResult<()>;
33
34 fn update_pipeline_stages(
36 &self,
37 block_number: BlockNumber,
38 drop_stage_checkpoint: bool,
39 ) -> ProviderResult<()>;
40}