openmina_node_common/service/
replay.rs1use std::collections::VecDeque;
2
3use node::ActionKind;
4use redux::ActionMeta;
5
6pub struct ReplayerState {
7 pub initial_monotonic: redux::Instant,
8 pub initial_time: redux::Timestamp,
9 pub expected_actions: VecDeque<(ActionKind, ActionMeta)>,
10 pub replay_dynamic_effects_lib: String,
11}
12
13impl ReplayerState {
14 pub fn next_monotonic_time(&self) -> redux::Instant {
15 self.expected_actions
16 .front()
17 .map(|(_, meta)| meta.time())
18 .map(|expected_time| {
19 let time_passed = expected_time.checked_sub(self.initial_time).unwrap();
20 self.initial_monotonic + time_passed
21 })
22 .unwrap_or(self.initial_monotonic)
23 }
24}