Add more data to stats footer

This commit is contained in:
Igor Katson 2024-08-21 13:40:43 +01:00
parent f1688add01
commit ddc725d1a9
No known key found for this signature in database
GPG key ID: B4EC22B66D61A3F5
5 changed files with 27 additions and 3 deletions

View file

@ -17,6 +17,7 @@ pub struct SessionStats {
pub atomic: Arc<AtomicSessionStats>,
pub down_speed_estimator: SpeedEstimator,
pub up_speed_estimator: SpeedEstimator,
pub startup_time: Instant,
}
impl SessionStats {
@ -25,6 +26,7 @@ impl SessionStats {
atomic: Default::default(),
down_speed_estimator: SpeedEstimator::new(5),
up_speed_estimator: SpeedEstimator::new(5),
startup_time: Instant::now(),
}
}
}

View file

@ -1,3 +1,5 @@
use std::sync::atomic::Ordering;
use serde::Serialize;
use crate::torrent_state::{peers::stats::snapshot::AggregatePeerStats, stats::Speed};
@ -6,9 +8,12 @@ use super::SessionStats;
#[derive(Debug, Serialize)]
pub struct SessionStatsSnapshot {
fetched_bytes: u64,
uploaded_bytes: u64,
download_speed: Speed,
upload_speed: Speed,
peers: AggregatePeerStats,
uptime_seconds: u64,
}
impl From<&SessionStats> for SessionStatsSnapshot {
@ -16,7 +21,10 @@ impl From<&SessionStats> for SessionStatsSnapshot {
Self {
download_speed: s.down_speed_estimator.mbps().into(),
upload_speed: s.up_speed_estimator.mbps().into(),
fetched_bytes: s.atomic.fetched_bytes.load(Ordering::Relaxed),
uploaded_bytes: s.atomic.uploaded_bytes.load(Ordering::Relaxed),
peers: AggregatePeerStats::from(&s.atomic.peers),
uptime_seconds: s.startup_time.elapsed().as_secs(),
}
}
}