1use crate::{
6 base_types::EpochId,
7 message_envelope::Message,
8 messages_checkpoint::{CheckpointDigest, CheckpointSummary, CheckpointTimestamp},
9};
10
11#[derive(Default)]
13pub struct EpochData {
14 epoch_id: EpochId,
15 epoch_start_timestamp: CheckpointTimestamp,
16 epoch_digest: CheckpointDigest,
17}
18
19impl EpochData {
20 pub fn new(
21 epoch_id: EpochId,
22 epoch_start_timestamp: CheckpointTimestamp,
23 epoch_digest: CheckpointDigest,
24 ) -> Self {
25 Self {
26 epoch_id,
27 epoch_start_timestamp,
28 epoch_digest,
29 }
30 }
31
32 pub fn new_genesis(epoch_start_timestamp: CheckpointTimestamp) -> Self {
33 Self {
34 epoch_id: 0,
35 epoch_start_timestamp,
36 epoch_digest: Default::default(),
37 }
38 }
39
40 pub fn new_from_epoch_checkpoint(
41 epoch_id: EpochId,
42 epoch_checkpoint: &CheckpointSummary,
43 ) -> Self {
44 Self {
45 epoch_id,
46 epoch_start_timestamp: epoch_checkpoint.timestamp_ms,
47 epoch_digest: epoch_checkpoint.digest(),
48 }
49 }
50
51 pub fn new_test() -> Self {
52 Default::default()
53 }
54
55 pub fn epoch_id(&self) -> EpochId {
56 self.epoch_id
57 }
58
59 pub fn epoch_start_timestamp(&self) -> CheckpointTimestamp {
60 self.epoch_start_timestamp
61 }
62
63 pub fn epoch_digest(&self) -> CheckpointDigest {
64 self.epoch_digest
65 }
66}