eth_tx_manager/
time.rs

1use async_trait::async_trait;
2use std::fmt::Debug;
3use std::time::{Duration, Instant};
4
5#[async_trait]
6pub trait Time: Clone + Debug {
7    async fn sleep(&self, duration: Duration);
8
9    fn elapsed(&self, start: Instant) -> Duration;
10}
11
12#[derive(Clone, Debug)]
13pub struct DefaultTime;
14
15#[async_trait]
16impl Time for DefaultTime {
17    async fn sleep(&self, duration: Duration) {
18        tokio::time::sleep(duration).await;
19    }
20
21    fn elapsed(&self, start: Instant) -> Duration {
22        Duration::from_millis(start.elapsed().as_millis() as u64)
23    }
24}