RateLimiter: add update_rate method

This commit is contained in:
Dietmar Maurer 2021-11-08 06:34:40 +01:00
parent 0c27d5da17
commit 2f221df863

View File

@ -34,6 +34,17 @@ impl RateLimiter {
}
}
/// Update rate and bucket size
pub fn update_rate(&mut self, rate: u64, bucket_size: u64) {
self.rate = rate;
if bucket_size < self.bucket_size && self.consumed_tokens > bucket_size {
self.consumed_tokens = bucket_size; // start again
}
self.bucket_size = bucket_size;
}
/// Returns the average rate (since `start_time`)
pub fn average_rate(&self, current_time: Instant) -> f64 {
let time_diff = current_time.saturating_duration_since(self.start_time).as_secs_f64();