rsiot/executor/
check_capacity.rs1use tokio::sync::mpsc;
2use tracing::warn;
3
4pub trait CheckCapacity {
6 fn check_capacity(&self, threshold: f64, name: &str) -> bool;
10}
11
12impl<T> CheckCapacity for mpsc::Receiver<T> {
13 fn check_capacity(&self, threshold: f64, name: &str) -> bool {
14 let capacity = self.capacity();
15 let max_capacity = self.max_capacity();
16 let free_percent = (capacity as f64) / (max_capacity as f64);
17
18 let warning = free_percent < threshold;
19 if warning {
20 warn!(
21 "Channel capacity too low: {}; channel: {}",
22 free_percent, name
23 );
24 }
25
26 warning
27 }
28}