mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
udp: move PeerStatus from common.rs to swarm worker
This commit is contained in:
parent
a86eb68fe7
commit
e2e525b560
2 changed files with 47 additions and 44 deletions
|
|
@ -153,29 +153,6 @@ impl ConnectedResponseSender {
|
||||||
|
|
||||||
pub type ConnectedResponseReceiver = Receiver<(CanonicalSocketAddr, ConnectedResponse)>;
|
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 {
|
pub enum StatisticsMessage {
|
||||||
Ipv4PeerHistogram(Histogram<u64>),
|
Ipv4PeerHistogram(Histogram<u64>),
|
||||||
Ipv6PeerHistogram(Histogram<u64>),
|
Ipv6PeerHistogram(Histogram<u64>),
|
||||||
|
|
@ -242,27 +219,6 @@ mod tests {
|
||||||
|
|
||||||
use super::*;
|
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
|
// Assumes that announce response with maximum amount of ipv6 peers will
|
||||||
// be the longest
|
// be the longest
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
|
|
@ -516,3 +516,50 @@ struct Peer {
|
||||||
is_seeder: bool,
|
is_seeder: bool,
|
||||||
valid_until: ValidUntil,
|
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)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue