reth_stages_api/pipeline/
progress.rs1use crate::{util::opt, ControlFlow};
2use alloy_primitives::BlockNumber;
3
4#[derive(Debug, Default)]
5pub(crate) struct PipelineProgress {
6 pub(crate) block_number: Option<BlockNumber>,
8 pub(crate) maximum_block_number: Option<BlockNumber>,
10 pub(crate) minimum_block_number: Option<BlockNumber>,
12}
13
14impl PipelineProgress {
15 pub(crate) fn update(&mut self, block_number: BlockNumber) {
16 self.block_number = Some(block_number);
17 self.minimum_block_number = opt::min(self.minimum_block_number, block_number);
18 self.maximum_block_number = opt::max(self.maximum_block_number, block_number);
19 }
20
21 pub(crate) const fn next_ctrl(&self) -> ControlFlow {
23 match self.block_number {
24 Some(block_number) => ControlFlow::Continue { block_number },
25 None => ControlFlow::NoProgress { block_number: None },
26 }
27 }
28}