diff --git a/src/ratecontroller.rs b/src/ratecontroller.rs index 6ba8e5e..110c631 100644 --- a/src/ratecontroller.rs +++ b/src/ratecontroller.rs @@ -286,54 +286,6 @@ impl Ratecontroller { Ok(()) } - fn update_deltas(&mut self) -> anyhow::Result<()> { - drain_latest_snapshot(&self.control_snapshot_rx, &mut self.control_snapshot); - let now_t = Instant::now(); - let reflectors = self.reflectors_lock.read_anyhow()?; - let (down_deltas, up_deltas) = deltas_from_snapshot( - self.control_snapshot.as_ref(), - &reflectors, - now_t, - self.settings.advanced_settings.tick_interval, - ); - self.state_dl.deltas = down_deltas; - self.state_ul.deltas = up_deltas; - - if self.state_dl.deltas.len() < 5 || self.state_ul.deltas.len() < 5 { - // trigger reselection - warn!( - "Not enough delta values (D: {}, U: {}, need 5), triggering reselection", - self.state_dl.deltas.len(), - self.state_ul.deltas.len() - ); - let _ = self.reselect_trigger.try_send(true); - } - - Ok(()) - } -} - -impl Ratecontroller { - pub fn new( - settings: Settings, - control_snapshot_rx: Receiver, - reflectors_lock: ArcRwLock>, - reselect_trigger: Sender, - metrics: MetricsSender, - ) -> anyhow::Result { - Self::new_with_backends( - settings, - control_snapshot_rx, - reflectors_lock, - reselect_trigger, - metrics, - interface_stats_provider(), - traffic_control_backend(), - ) - } -} - -impl Ratecontroller { pub fn run(&mut self) -> anyhow::Result<()> { let sleep_time = Duration::from_secs_f64(self.settings.advanced_settings.min_change_interval); @@ -521,6 +473,52 @@ impl Ratecontroller { } } } + + fn update_deltas(&mut self) -> anyhow::Result<()> { + drain_latest_snapshot(&self.control_snapshot_rx, &mut self.control_snapshot); + let now_t = Instant::now(); + let reflectors = self.reflectors_lock.read_anyhow()?; + let (down_deltas, up_deltas) = deltas_from_snapshot( + self.control_snapshot.as_ref(), + &reflectors, + now_t, + self.settings.advanced_settings.tick_interval, + ); + self.state_dl.deltas = down_deltas; + self.state_ul.deltas = up_deltas; + + if self.state_dl.deltas.len() < 5 || self.state_ul.deltas.len() < 5 { + // trigger reselection + warn!( + "Not enough delta values (D: {}, U: {}, need 5), triggering reselection", + self.state_dl.deltas.len(), + self.state_ul.deltas.len() + ); + let _ = self.reselect_trigger.try_send(true); + } + + Ok(()) + } +} + +impl Ratecontroller { + pub fn new( + settings: Settings, + control_snapshot_rx: Receiver, + reflectors_lock: ArcRwLock>, + reselect_trigger: Sender, + metrics: MetricsSender, + ) -> anyhow::Result { + Self::new_with_backends( + settings, + control_snapshot_rx, + reflectors_lock, + reselect_trigger, + metrics, + interface_stats_provider(), + traffic_control_backend(), + ) + } } #[cfg(test)]