1use crate::{util::opt, ControlFlow};
2use alloy_primitives::BlockNumber;
34#[derive(Debug, Default)]
5pub(crate) struct PipelineProgress {
6/// Block number reached by the stage.
7pub(crate) block_number: Option<BlockNumber>,
8/// The maximum block number achieved by any stage during the execution of the pipeline.
9pub(crate) maximum_block_number: Option<BlockNumber>,
10/// The minimum block number achieved by any stage during the execution of the pipeline.
11pub(crate) minimum_block_number: Option<BlockNumber>,
12}
1314impl PipelineProgress {
15pub(crate) fn update(&mut self, block_number: BlockNumber) {
16self.block_number = Some(block_number);
17self.minimum_block_number = opt::min(self.minimum_block_number, block_number);
18self.maximum_block_number = opt::max(self.maximum_block_number, block_number);
19 }
2021/// Get next control flow step
22pub(crate) const fn next_ctrl(&self) -> ControlFlow {
23match self.block_number {
24Some(block_number) => ControlFlow::Continue { block_number },
25None => ControlFlow::NoProgress { block_number: None },
26 }
27 }
28}