commit e1a93e31476b246bf5441e71ed1898da757959c3 from: Thomas Böhler date: Fri Dec 9 10:14:40 2022 UTC Add momentary throughput to output Fixes: https://todo.sr.ht/~witcher/bachelor-thesis/7 commit - 5078b3d01584d786d632eca19fa6ccdd57813fdb commit + e1a93e31476b246bf5441e71ed1898da757959c3 blob - 5d7a590bcafa165dfc90e4c281cf91f92f0101fc blob + 1a53c1dd8f0a7ceec6928e50052b03960fb4a47c --- src/main.rs +++ src/main.rs @@ -23,6 +23,7 @@ static STATE: Lazy> = Lazy::new struct ThroughputState { time_passed: Instant, write_len: usize, + total_write_len: usize, next_seq: u8, packets_missed: usize, } @@ -32,6 +33,7 @@ impl ThroughputState { Self { time_passed: Instant::now(), write_len: 0, + total_write_len: 0, next_seq: 0, packets_missed: 0, } @@ -53,15 +55,24 @@ impl ThroughputState { pub fn add_write_len(&mut self, len: usize) { self.write_len += len; + self.total_write_len += len; } pub fn get_write_len(&self) -> usize { self.write_len } + pub fn get_total_write_len(&self) -> usize { + self.total_write_len + } + pub fn get_packets_missed(&self) -> usize { self.packets_missed } + + pub fn reset_write_len(&mut self) { + self.write_len = 0; + } } fn handle_buffer_write(payload: Vec) { @@ -119,19 +130,23 @@ fn main() { loop { // TODO: can't handle different connections (will reuse previous STATE) if let Some(state) = once_cell::sync::Lazy::get(&STATE) { - let s = state.lock().unwrap(); - let passed = s.get_time_passed().as_secs().max(1); - let len = s.get_write_len(); + let mut s = state.lock().unwrap(); + let passed = s.get_time_passed().as_secs(); + let total_len = s.get_total_write_len(); + let momentary_len = s.get_write_len(); let lost = s.get_packets_missed(); + s.reset_write_len(); drop(s); - log::info!( - "Throughput: {} kbit/s ({} bit/{} s) ({} packets lost)", - (len * 8) / 1000 / passed as usize, - len, - passed, - lost - ); + if passed > 0 { + log::info!( + "Throughput: {} kbit/s ({} kbit/s momentary) (running {}s, {} packets lost)", + (total_len * 8) / 1000 / passed as usize, + (momentary_len * 8) / 1000, + passed, + lost + ); + } } else { log::info!("Not connected"); }