diff_priv/analysis/
publishing_delay_analyser.rs

1use crate::data_manipulation::anonymizable::Anonymizable;
2use std::time::{Duration, SystemTime, UNIX_EPOCH};
3
4/// Analyses the average delay a tuple experiences between being put
5/// inside the algorithm and being published
6#[derive(Default)]
7pub struct PublishingDelayAnalyser {
8    count: i32,
9    sum_delays: Duration,
10}
11
12impl PublishingDelayAnalyser {
13    pub fn add_delay<A: Anonymizable>(&mut self, value: &A) {
14        self.count += 1;
15        self.sum_delays += SystemTime::now()
16            .duration_since(value.get_timestamp())
17            .unwrap()
18    }
19
20    pub fn calculate_average_delay(&self) -> Duration {
21        self.sum_delays.div_f64(self.count as f64)
22    }
23}