diff --git a/aquatic/src/lib/common.rs b/aquatic/src/lib/common.rs index b4fba40..8ffbd7f 100644 --- a/aquatic/src/lib/common.rs +++ b/aquatic/src/lib/common.rs @@ -120,6 +120,7 @@ pub type TorrentMap = DashMap; pub struct Statistics { pub requests_received: AtomicUsize, pub responses_sent: AtomicUsize, + pub readable_events: AtomicUsize, } diff --git a/aquatic/src/lib/lib.rs b/aquatic/src/lib/lib.rs index 4c5132b..1508caa 100644 --- a/aquatic/src/lib/lib.rs +++ b/aquatic/src/lib/lib.rs @@ -33,15 +33,27 @@ pub fn run(){ loop { ::std::thread::sleep(Duration::from_secs(interval)); - let requests_per_second: f64 = state.statistics.requests_received - .fetch_and(0, Ordering::SeqCst) as f64 / interval as f64; - let responses_per_second: f64 = state.statistics.responses_sent - .fetch_and(0, Ordering::SeqCst) as f64 / interval as f64; + let requests_received: f64 = state.statistics.requests_received + .fetch_and(0, Ordering::SeqCst) as f64; + let responses_sent: f64 = state.statistics.responses_sent + .fetch_and(0, Ordering::SeqCst) as f64; + + let requests_per_second = requests_received / interval as f64; + let responses_per_second: f64 = responses_sent / interval as f64; + + let readable_events: f64 = state.statistics.readable_events + .fetch_and(0, Ordering::SeqCst) as f64; + let requests_per_readable_event = if readable_events == 0.0 { + 0.0 + } else { + requests_received / readable_events + }; println!( - "stats: {} requests/second, {} responses/second", + "stats: {:.2} requests/second, {:.2} responses/second, {:.2} requests/readable event", requests_per_second, - responses_per_second + responses_per_second, + requests_per_readable_event ); } }); diff --git a/aquatic/src/lib/network.rs b/aquatic/src/lib/network.rs index cfb2757..7d4b139 100644 --- a/aquatic/src/lib/network.rs +++ b/aquatic/src/lib/network.rs @@ -58,6 +58,8 @@ pub fn run_event_loop( &mut scrape_requests ); + state.statistics.readable_events.fetch_add(1, Ordering::SeqCst); + poll.registry() .reregister(&mut socket, token, interests) .unwrap();