From e2e525b560d2ef79ebdaee3f2aebbfeef52e7b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Thu, 1 Feb 2024 23:25:43 +0100 Subject: [PATCH] udp: move PeerStatus from common.rs to swarm worker --- crates/udp/src/common.rs | 44 ----------------------- crates/udp/src/workers/swarm/storage.rs | 47 +++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/crates/udp/src/common.rs b/crates/udp/src/common.rs index 19f8b27..6470f52 100644 --- a/crates/udp/src/common.rs +++ b/crates/udp/src/common.rs @@ -153,29 +153,6 @@ impl ConnectedResponseSender { pub type ConnectedResponseReceiver = Receiver<(CanonicalSocketAddr, ConnectedResponse)>; -#[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)] -pub enum PeerStatus { - Seeding, - Leeching, - Stopped, -} - -impl PeerStatus { - /// Determine peer status from announce event and number of bytes left. - /// - /// Likely, the last branch will be taken most of the time. - #[inline] - pub fn from_event_and_bytes_left(event: AnnounceEvent, bytes_left: NumberOfBytes) -> Self { - if event == AnnounceEvent::Stopped { - Self::Stopped - } else if bytes_left.0.get() == 0 { - Self::Seeding - } else { - Self::Leeching - } - } -} - pub enum StatisticsMessage { Ipv4PeerHistogram(Histogram), Ipv6PeerHistogram(Histogram), @@ -242,27 +219,6 @@ mod tests { use super::*; - #[test] - fn test_peer_status_from_event_and_bytes_left() { - use crate::common::*; - - use PeerStatus::*; - - let f = PeerStatus::from_event_and_bytes_left; - - assert_eq!(Stopped, f(AnnounceEvent::Stopped, NumberOfBytes::new(0))); - assert_eq!(Stopped, f(AnnounceEvent::Stopped, NumberOfBytes::new(1))); - - assert_eq!(Seeding, f(AnnounceEvent::Started, NumberOfBytes::new(0))); - assert_eq!(Leeching, f(AnnounceEvent::Started, NumberOfBytes::new(1))); - - assert_eq!(Seeding, f(AnnounceEvent::Completed, NumberOfBytes::new(0))); - assert_eq!(Leeching, f(AnnounceEvent::Completed, NumberOfBytes::new(1))); - - assert_eq!(Seeding, f(AnnounceEvent::None, NumberOfBytes::new(0))); - assert_eq!(Leeching, f(AnnounceEvent::None, NumberOfBytes::new(1))); - } - // Assumes that announce response with maximum amount of ipv6 peers will // be the longest #[test] diff --git a/crates/udp/src/workers/swarm/storage.rs b/crates/udp/src/workers/swarm/storage.rs index 0c1dcc2..952cd04 100644 --- a/crates/udp/src/workers/swarm/storage.rs +++ b/crates/udp/src/workers/swarm/storage.rs @@ -516,3 +516,50 @@ struct Peer { is_seeder: bool, valid_until: ValidUntil, } + +#[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)] +pub enum PeerStatus { + Seeding, + Leeching, + Stopped, +} + +impl PeerStatus { + /// Determine peer status from announce event and number of bytes left. + /// + /// Likely, the last branch will be taken most of the time. + #[inline] + pub fn from_event_and_bytes_left(event: AnnounceEvent, bytes_left: NumberOfBytes) -> Self { + if event == AnnounceEvent::Stopped { + Self::Stopped + } else if bytes_left.0.get() == 0 { + Self::Seeding + } else { + Self::Leeching + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_peer_status_from_event_and_bytes_left() { + use PeerStatus::*; + + let f = PeerStatus::from_event_and_bytes_left; + + assert_eq!(Stopped, f(AnnounceEvent::Stopped, NumberOfBytes::new(0))); + assert_eq!(Stopped, f(AnnounceEvent::Stopped, NumberOfBytes::new(1))); + + assert_eq!(Seeding, f(AnnounceEvent::Started, NumberOfBytes::new(0))); + assert_eq!(Leeching, f(AnnounceEvent::Started, NumberOfBytes::new(1))); + + assert_eq!(Seeding, f(AnnounceEvent::Completed, NumberOfBytes::new(0))); + assert_eq!(Leeching, f(AnnounceEvent::Completed, NumberOfBytes::new(1))); + + assert_eq!(Seeding, f(AnnounceEvent::None, NumberOfBytes::new(0))); + assert_eq!(Leeching, f(AnnounceEvent::None, NumberOfBytes::new(1))); + } +}