use crate::protocols::traits::TransferProgress;
use tokio::sync::mpsc;
use tokio::time::Instant;
#[inline]
pub fn calc_speed(bytes_done: u64, start: &Instant) -> f64 {
let elapsed = start.elapsed().as_secs_f64();
if elapsed > 0.0 {
bytes_done as f64 / elapsed
} else {
0.0
}
}
#[inline]
pub fn send_progress(
tx: &mpsc::UnboundedSender<TransferProgress>,
bytes_transferred: u64,
start: &Instant,
) {
let _ = tx.send(TransferProgress {
bytes_transferred,
transfer_speed: calc_speed(bytes_transferred, start),
});
}