1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use ckb_types::core::{EpochExt, HeaderView};
pub trait EpochProvider {
fn get_epoch_ext(&self, block_header: &HeaderView) -> Option<EpochExt>;
fn get_block_epoch(&self, block_header: &HeaderView) -> Option<BlockEpoch>;
}
pub enum BlockEpoch {
TailBlock {
epoch: EpochExt,
epoch_uncles_count: u64,
epoch_duration_in_milliseconds: u64,
},
NonTailBlock {
epoch: EpochExt,
},
}
impl BlockEpoch {
pub fn epoch(self) -> EpochExt {
match self {
Self::TailBlock {
epoch,
epoch_uncles_count: _,
epoch_duration_in_milliseconds: _,
} => epoch,
Self::NonTailBlock { epoch } => epoch,
}
}
}