for Vec {
pub mod fixture {
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- use super::{Id, Peer};
- use crate::announce_event::AnnounceEvent;
- use crate::{DurationSinceUnixEpoch, NumberOfBytes};
+ use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes};
+
+ use super::{Id, Peer, PeerId};
+ use crate::DurationSinceUnixEpoch;
#[derive(PartialEq, Debug)]
@@ -366,12 +413,12 @@ pub mod fixture {
#[must_use]
pub fn seeder() -> Self {
let peer = Peer {
- peer_id: Id(*b"-qB00000000000000001"),
+ peer_id: PeerId(*b"-qB00000000000000001"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Completed,
};
@@ -382,12 +429,12 @@ pub mod fixture {
#[must_use]
pub fn leecher() -> Self {
let peer = Peer {
- peer_id: Id(*b"-qB00000000000000002"),
+ peer_id: PeerId(*b"-qB00000000000000002"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 2)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(10),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(10),
event: AnnounceEvent::Started,
};
@@ -396,7 +443,7 @@ pub mod fixture {
#[allow(dead_code)]
#[must_use]
- pub fn with_peer_id(mut self, peer_id: &Id) -> Self {
+ pub fn with_peer_id(mut self, peer_id: &PeerId) -> Self {
self.peer.peer_id = *peer_id;
self
}
@@ -411,14 +458,14 @@ pub mod fixture {
#[allow(dead_code)]
#[must_use]
pub fn with_bytes_pending_to_download(mut self, left: i64) -> Self {
- self.peer.left = NumberOfBytes(left);
+ self.peer.left = NumberOfBytes::new(left);
self
}
#[allow(dead_code)]
#[must_use]
pub fn with_no_bytes_pending_to_download(mut self) -> Self {
- self.peer.left = NumberOfBytes(0);
+ self.peer.left = NumberOfBytes::new(0);
self
}
@@ -445,12 +492,12 @@ pub mod fixture {
impl Default for Peer {
fn default() -> Self {
Self {
- peer_id: Id::default(),
+ peer_id: PeerId(*b"-qB00000000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Started,
}
}
@@ -458,7 +505,8 @@ pub mod fixture {
impl Default for Id {
fn default() -> Self {
- Self(*b"-qB00000000000000000")
+ let data = PeerId(*b"-qB00000000000000000");
+ Self { data }
}
}
}
@@ -466,113 +514,50 @@ pub mod fixture {
#[cfg(test)]
pub mod test {
mod torrent_peer_id {
- use crate::peer;
+ use aquatic_udp_protocol::PeerId;
- #[test]
- fn should_be_instantiated_from_a_byte_slice() {
- let id = peer::Id::from_bytes(&[
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]);
-
- let expected_id = peer::Id([
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]);
-
- assert_eq!(id, expected_id);
- }
-
- #[test]
- #[should_panic = "we are testing the equality of the constant: `PEER_ID_BYTES_LEN` (20) and the supplied `bytes` length: 19"]
- fn should_fail_trying_to_instantiate_from_a_byte_slice_with_less_than_20_bytes() {
- let less_than_20_bytes = [0; 19];
- let _: peer::Id = peer::Id::from_bytes(&less_than_20_bytes);
- }
-
- #[test]
- #[should_panic = "we are testing the equality of the constant: `PEER_ID_BYTES_LEN` (20) and the supplied `bytes` length: 21"]
- fn should_fail_trying_to_instantiate_from_a_byte_slice_with_more_than_20_bytes() {
- let more_than_20_bytes = [0; 21];
- let _: peer::Id = peer::Id::from_bytes(&more_than_20_bytes);
- }
-
- #[test]
- fn should_be_instantiated_from_a_string() {
- let id = "-qB00000000000000001".parse::().unwrap();
-
- let expected_id = peer::Id([
- 45, 113, 66, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49,
- ]);
-
- assert_eq!(id, expected_id);
- }
-
- #[test]
- fn should_be_converted_from_a_20_byte_array() {
- let id = peer::Id::from([
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]);
-
- let expected_id = peer::Id([
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]);
-
- assert_eq!(id, expected_id);
- }
-
- #[test]
- fn should_be_converted_from_a_byte_vector() {
- let id = peer::Id::try_from(
- [
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]
- .to_vec(),
- )
- .unwrap();
-
- let expected_id = peer::Id([
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]);
-
- assert_eq!(id, expected_id);
- }
+ use crate::peer;
#[test]
#[should_panic = "NotEnoughBytes"]
fn should_fail_trying_to_convert_from_a_byte_vector_with_less_than_20_bytes() {
- let _: peer::Id = peer::Id::try_from([0; 19].to_vec()).unwrap();
+ let _ = peer::Id::try_from([0; 19].to_vec()).unwrap();
}
#[test]
#[should_panic = "TooManyBytes"]
fn should_fail_trying_to_convert_from_a_byte_vector_with_more_than_20_bytes() {
- let _: peer::Id = peer::Id::try_from([0; 21].to_vec()).unwrap();
+ let _ = peer::Id::try_from([0; 21].to_vec()).unwrap();
}
#[test]
fn should_be_converted_to_hex_string() {
- let id = peer::Id(*b"-qB00000000000000000");
+ let id = peer::Id {
+ data: PeerId(*b"-qB00000000000000000"),
+ };
assert_eq!(id.to_hex_string().unwrap(), "0x2d71423030303030303030303030303030303030");
- let id = peer::Id([
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]);
+ let id = peer::Id {
+ data: PeerId([
+ 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
+ ]),
+ };
assert_eq!(id.to_hex_string().unwrap(), "0x009f9296009f9296009f9296009f9296009f9296");
}
#[test]
fn should_be_converted_into_string_type_using_the_hex_string_format() {
- let id = peer::Id(*b"-qB00000000000000000");
+ let id = peer::Id {
+ data: PeerId(*b"-qB00000000000000000"),
+ };
assert_eq!(id.to_string(), "0x2d71423030303030303030303030303030303030");
- let id = peer::Id([
- 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
- ]);
+ let id = peer::Id {
+ data: PeerId([
+ 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150, 0, 159, 146, 150,
+ ]),
+ };
assert_eq!(id.to_string(), "0x009f9296009f9296009f9296009f9296009f9296");
}
-
- #[test]
- fn should_return_the_inner_bytes() {
- assert_eq!(peer::Id(*b"-qB00000000000000000").to_bytes(), *b"-qB00000000000000000");
- }
}
}
diff --git a/packages/torrent-repository/Cargo.toml b/packages/torrent-repository/Cargo.toml
index 1fd58ab02..38405e4e0 100644
--- a/packages/torrent-repository/Cargo.toml
+++ b/packages/torrent-repository/Cargo.toml
@@ -16,6 +16,7 @@ rust-version.workspace = true
version.workspace = true
[dependencies]
+aquatic_udp_protocol = "0"
crossbeam-skiplist = "0"
dashmap = "6"
futures = "0"
@@ -24,6 +25,7 @@ tokio = { version = "1", features = ["macros", "net", "rt-multi-thread", "signal
torrust-tracker-clock = { version = "3.0.0-beta-develop", path = "../clock" }
torrust-tracker-configuration = { version = "3.0.0-beta-develop", path = "../configuration" }
torrust-tracker-primitives = { version = "3.0.0-beta-develop", path = "../primitives" }
+zerocopy = "0"
[dev-dependencies]
async-std = { version = "1", features = ["attributes", "tokio1"] }
diff --git a/packages/torrent-repository/benches/helpers/asyn.rs b/packages/torrent-repository/benches/helpers/asyn.rs
index 1c6d9d915..08862abc8 100644
--- a/packages/torrent-repository/benches/helpers/asyn.rs
+++ b/packages/torrent-repository/benches/helpers/asyn.rs
@@ -16,7 +16,7 @@ where
for _ in 0..samples {
let torrent_repository = V::default();
- let info_hash = InfoHash([0; 20]);
+ let info_hash = InfoHash::default();
torrent_repository.upsert_peer(&info_hash, &DEFAULT_PEER).await;
@@ -33,13 +33,13 @@ where
Arc: Clone + Send + Sync + 'static,
{
let torrent_repository = Arc::::default();
- let info_hash: &'static InfoHash = &InfoHash([0; 20]);
+ let info_hash = InfoHash::default();
let handles = FuturesUnordered::new();
// Add the torrent/peer to the torrent repository
- torrent_repository.upsert_peer(info_hash, &DEFAULT_PEER).await;
+ torrent_repository.upsert_peer(&info_hash, &DEFAULT_PEER).await;
- torrent_repository.get_swarm_metadata(info_hash).await;
+ torrent_repository.get_swarm_metadata(&info_hash).await;
let start = Instant::now();
@@ -47,9 +47,9 @@ where
let torrent_repository_clone = torrent_repository.clone();
let handle = runtime.spawn(async move {
- torrent_repository_clone.upsert_peer(info_hash, &DEFAULT_PEER).await;
+ torrent_repository_clone.upsert_peer(&info_hash, &DEFAULT_PEER).await;
- torrent_repository_clone.get_swarm_metadata(info_hash).await;
+ torrent_repository_clone.get_swarm_metadata(&info_hash).await;
if let Some(sleep_time) = sleep {
let start_time = std::time::Instant::now();
diff --git a/packages/torrent-repository/benches/helpers/sync.rs b/packages/torrent-repository/benches/helpers/sync.rs
index 63fccfc77..77055911d 100644
--- a/packages/torrent-repository/benches/helpers/sync.rs
+++ b/packages/torrent-repository/benches/helpers/sync.rs
@@ -18,7 +18,7 @@ where
for _ in 0..samples {
let torrent_repository = V::default();
- let info_hash = InfoHash([0; 20]);
+ let info_hash = InfoHash::default();
torrent_repository.upsert_peer(&info_hash, &DEFAULT_PEER);
@@ -35,13 +35,13 @@ where
Arc: Clone + Send + Sync + 'static,
{
let torrent_repository = Arc::::default();
- let info_hash: &'static InfoHash = &InfoHash([0; 20]);
+ let info_hash = InfoHash::default();
let handles = FuturesUnordered::new();
// Add the torrent/peer to the torrent repository
- torrent_repository.upsert_peer(info_hash, &DEFAULT_PEER);
+ torrent_repository.upsert_peer(&info_hash, &DEFAULT_PEER);
- torrent_repository.get_swarm_metadata(info_hash);
+ torrent_repository.get_swarm_metadata(&info_hash);
let start = Instant::now();
@@ -49,9 +49,9 @@ where
let torrent_repository_clone = torrent_repository.clone();
let handle = runtime.spawn(async move {
- torrent_repository_clone.upsert_peer(info_hash, &DEFAULT_PEER);
+ torrent_repository_clone.upsert_peer(&info_hash, &DEFAULT_PEER);
- torrent_repository_clone.get_swarm_metadata(info_hash);
+ torrent_repository_clone.get_swarm_metadata(&info_hash);
if let Some(sleep_time) = sleep {
let start_time = std::time::Instant::now();
diff --git a/packages/torrent-repository/benches/helpers/utils.rs b/packages/torrent-repository/benches/helpers/utils.rs
index 170194806..e21ac7332 100644
--- a/packages/torrent-repository/benches/helpers/utils.rs
+++ b/packages/torrent-repository/benches/helpers/utils.rs
@@ -1,18 +1,19 @@
use std::collections::HashSet;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
-use torrust_tracker_primitives::announce_event::AnnounceEvent;
+use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes, PeerId};
use torrust_tracker_primitives::info_hash::InfoHash;
-use torrust_tracker_primitives::peer::{Id, Peer};
-use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfBytes};
+use torrust_tracker_primitives::peer::Peer;
+use torrust_tracker_primitives::DurationSinceUnixEpoch;
+use zerocopy::I64;
pub const DEFAULT_PEER: Peer = Peer {
- peer_id: Id([0; 20]),
+ peer_id: PeerId([0; 20]),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::from_secs(0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes(I64::ZERO),
+ downloaded: NumberOfBytes(I64::ZERO),
+ left: NumberOfBytes(I64::ZERO),
event: AnnounceEvent::Started,
};
@@ -30,7 +31,7 @@ pub fn generate_unique_info_hashes(size: usize) -> Vec {
bytes[2] = ((i >> 16) & 0xFF) as u8;
bytes[3] = ((i >> 24) & 0xFF) as u8;
- let info_hash = InfoHash(bytes);
+ let info_hash = InfoHash::from_bytes(&bytes);
result.insert(info_hash);
}
diff --git a/packages/torrent-repository/src/entry/peer_list.rs b/packages/torrent-repository/src/entry/peer_list.rs
index 3f69edbb5..33270cf27 100644
--- a/packages/torrent-repository/src/entry/peer_list.rs
+++ b/packages/torrent-repository/src/entry/peer_list.rs
@@ -2,6 +2,7 @@
use std::net::SocketAddr;
use std::sync::Arc;
+use aquatic_udp_protocol::PeerId;
use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
// code-review: the current implementation uses the peer Id as the ``BTreeMap``
@@ -11,7 +12,7 @@ use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct PeerList {
- peers: std::collections::BTreeMap>,
+ peers: std::collections::BTreeMap>,
}
impl PeerList {
@@ -29,7 +30,7 @@ impl PeerList {
self.peers.insert(value.peer_id, value)
}
- pub fn remove(&mut self, key: &peer::Id) -> Option> {
+ pub fn remove(&mut self, key: &PeerId) -> Option> {
self.peers.remove(key)
}
@@ -39,7 +40,7 @@ impl PeerList {
}
#[must_use]
- pub fn get(&self, peer_id: &peer::Id) -> Option<&Arc> {
+ pub fn get(&self, peer_id: &PeerId) -> Option<&Arc> {
self.peers.get(peer_id)
}
@@ -89,8 +90,8 @@ mod tests {
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::sync::Arc;
+ use aquatic_udp_protocol::PeerId;
use torrust_tracker_primitives::peer::fixture::PeerBuilder;
- use torrust_tracker_primitives::peer::{self};
use torrust_tracker_primitives::DurationSinceUnixEpoch;
use crate::entry::peer_list::PeerList;
@@ -193,13 +194,13 @@ mod tests {
let mut peer_list = PeerList::default();
let peer1 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_peer_addr(&SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 6969))
.build();
peer_list.upsert(peer1.into());
let peer2 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000002"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000002"))
.with_peer_addr(&SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 2)), 6969))
.build();
peer_list.upsert(peer2.into());
@@ -273,14 +274,10 @@ mod tests {
fn allow_inserting_two_identical_peers_except_for_the_id() {
let mut peer_list = PeerList::default();
- let peer1 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
- .build();
+ let peer1 = PeerBuilder::default().with_peer_id(&PeerId(*b"-qB00000000000000001")).build();
peer_list.upsert(peer1.into());
- let peer2 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000002"))
- .build();
+ let peer2 = PeerBuilder::default().with_peer_id(&PeerId(*b"-qB00000000000000002")).build();
peer_list.upsert(peer2.into());
assert_eq!(peer_list.len(), 2);
diff --git a/packages/torrent-repository/src/entry/single.rs b/packages/torrent-repository/src/entry/single.rs
index 6d7ed3155..7f8cfc4e6 100644
--- a/packages/torrent-repository/src/entry/single.rs
+++ b/packages/torrent-repository/src/entry/single.rs
@@ -1,8 +1,8 @@
use std::net::SocketAddr;
use std::sync::Arc;
+use aquatic_udp_protocol::AnnounceEvent;
use torrust_tracker_configuration::TrackerPolicy;
-use torrust_tracker_primitives::announce_event::AnnounceEvent;
use torrust_tracker_primitives::peer::{self};
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
use torrust_tracker_primitives::DurationSinceUnixEpoch;
diff --git a/packages/torrent-repository/tests/common/torrent_peer_builder.rs b/packages/torrent-repository/tests/common/torrent_peer_builder.rs
index 3a4e61ed2..33120180d 100644
--- a/packages/torrent-repository/tests/common/torrent_peer_builder.rs
+++ b/packages/torrent-repository/tests/common/torrent_peer_builder.rs
@@ -1,8 +1,8 @@
use std::net::SocketAddr;
+use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes, PeerId};
use torrust_tracker_clock::clock::Time;
-use torrust_tracker_primitives::announce_event::AnnounceEvent;
-use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch, NumberOfBytes};
+use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
use crate::CurrentClock;
@@ -42,14 +42,14 @@ impl TorrentPeerBuilder {
}
#[must_use]
- fn with_peer_id(mut self, peer_id: peer::Id) -> Self {
+ fn with_peer_id(mut self, peer_id: PeerId) -> Self {
self.peer.peer_id = peer_id;
self
}
#[must_use]
fn with_number_of_bytes_left(mut self, left: i64) -> Self {
- self.peer.left = NumberOfBytes(left);
+ self.peer.left = NumberOfBytes::new(left);
self
}
@@ -69,10 +69,11 @@ impl TorrentPeerBuilder {
/// has not announced it has stopped
#[must_use]
pub fn a_completed_peer(id: i32) -> peer::Peer {
+ let peer_id = peer::Id::new(id);
TorrentPeerBuilder::new()
.with_number_of_bytes_left(0)
.with_event_completed()
- .with_peer_id(id.into())
+ .with_peer_id(*peer_id)
.into()
}
@@ -80,9 +81,10 @@ pub fn a_completed_peer(id: i32) -> peer::Peer {
/// Leecher: left > 0 OR event = Stopped
#[must_use]
pub fn a_started_peer(id: i32) -> peer::Peer {
+ let peer_id = peer::Id::new(id);
TorrentPeerBuilder::new()
.with_number_of_bytes_left(1)
.with_event_started()
- .with_peer_id(id.into())
+ .with_peer_id(*peer_id)
.into()
}
diff --git a/packages/torrent-repository/tests/entry/mod.rs b/packages/torrent-repository/tests/entry/mod.rs
index 2a7063a4f..43d7f94da 100644
--- a/packages/torrent-repository/tests/entry/mod.rs
+++ b/packages/torrent-repository/tests/entry/mod.rs
@@ -2,13 +2,13 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::ops::Sub;
use std::time::Duration;
+use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes};
use rstest::{fixture, rstest};
use torrust_tracker_clock::clock::stopped::Stopped as _;
use torrust_tracker_clock::clock::{self, Time as _};
use torrust_tracker_configuration::{TrackerPolicy, TORRENT_PEERS_LIMIT};
-use torrust_tracker_primitives::announce_event::AnnounceEvent;
+use torrust_tracker_primitives::peer;
use torrust_tracker_primitives::peer::Peer;
-use torrust_tracker_primitives::{peer, NumberOfBytes};
use torrust_tracker_torrent_repository::{
EntryMutexParkingLot, EntryMutexStd, EntryMutexTokio, EntryRwLockParkingLot, EntrySingle,
};
@@ -86,7 +86,7 @@ async fn make(torrent: &mut Torrent, makes: &Makes) -> Vec {
let mut peer = a_started_peer(3);
torrent.upsert_peer(&peer).await;
peer.event = AnnounceEvent::Completed;
- peer.left = NumberOfBytes(0);
+ peer.left = NumberOfBytes::new(0);
torrent.upsert_peer(&peer).await;
vec![peer]
}
@@ -100,7 +100,7 @@ async fn make(torrent: &mut Torrent, makes: &Makes) -> Vec {
let mut peer_3 = a_started_peer(3);
torrent.upsert_peer(&peer_3).await;
peer_3.event = AnnounceEvent::Completed;
- peer_3.left = NumberOfBytes(0);
+ peer_3.left = NumberOfBytes::new(0);
torrent.upsert_peer(&peer_3).await;
vec![peer_1, peer_2, peer_3]
}
@@ -305,10 +305,10 @@ async fn it_should_update_a_peer_as_a_seeder(
let peers = torrent.get_peers(None).await;
let mut peer = **peers.first().expect("there should be a peer");
- let is_already_non_left = peer.left == NumberOfBytes(0);
+ let is_already_non_left = peer.left == NumberOfBytes::new(0);
// Set Bytes Left to Zero
- peer.left = NumberOfBytes(0);
+ peer.left = NumberOfBytes::new(0);
torrent.upsert_peer(&peer).await;
let stats = torrent.get_stats().await;
@@ -337,10 +337,10 @@ async fn it_should_update_a_peer_as_incomplete(
let peers = torrent.get_peers(None).await;
let mut peer = **peers.first().expect("there should be a peer");
- let completed_already = peer.left == NumberOfBytes(0);
+ let completed_already = peer.left == NumberOfBytes::new(0);
// Set Bytes Left to no Zero
- peer.left = NumberOfBytes(1);
+ peer.left = NumberOfBytes::new(1);
torrent.upsert_peer(&peer).await;
let stats = torrent.get_stats().await;
@@ -400,7 +400,7 @@ async fn it_should_limit_the_number_of_peers_returned(
// We add one more peer than the scrape limit
for peer_number in 1..=74 + 1 {
let mut peer = a_started_peer(1);
- peer.peer_id = peer::Id::from(peer_number);
+ peer.peer_id = *peer::Id::new(peer_number);
torrent.upsert_peer(&peer).await;
}
diff --git a/packages/torrent-repository/tests/repository/mod.rs b/packages/torrent-repository/tests/repository/mod.rs
index b3b742607..05d538582 100644
--- a/packages/torrent-repository/tests/repository/mod.rs
+++ b/packages/torrent-repository/tests/repository/mod.rs
@@ -1,13 +1,13 @@
use std::collections::{BTreeMap, HashSet};
use std::hash::{DefaultHasher, Hash, Hasher};
+use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes};
use rstest::{fixture, rstest};
use torrust_tracker_configuration::TrackerPolicy;
-use torrust_tracker_primitives::announce_event::AnnounceEvent;
use torrust_tracker_primitives::info_hash::InfoHash;
use torrust_tracker_primitives::pagination::Pagination;
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
-use torrust_tracker_primitives::{NumberOfBytes, PersistentTorrents};
+use torrust_tracker_primitives::PersistentTorrents;
use torrust_tracker_torrent_repository::entry::Entry as _;
use torrust_tracker_torrent_repository::repository::dash_map_mutex_std::XacrimonDashMap;
use torrust_tracker_torrent_repository::repository::rw_lock_std::RwLockStd;
@@ -100,7 +100,7 @@ fn downloaded() -> Entries {
let mut peer = a_started_peer(3);
torrent.upsert_peer(&peer);
peer.event = AnnounceEvent::Completed;
- peer.left = NumberOfBytes(0);
+ peer.left = NumberOfBytes::new(0);
torrent.upsert_peer(&peer);
vec![(InfoHash::default(), torrent)]
}
@@ -122,7 +122,7 @@ fn three() -> Entries {
let mut downloaded_peer = a_started_peer(3);
downloaded.upsert_peer(&downloaded_peer);
downloaded_peer.event = AnnounceEvent::Completed;
- downloaded_peer.left = NumberOfBytes(0);
+ downloaded_peer.left = NumberOfBytes::new(0);
downloaded.upsert_peer(&downloaded_peer);
downloaded.hash(downloaded_h);
diff --git a/src/console/clients/checker/checks/udp.rs b/src/console/clients/checker/checks/udp.rs
index dd4d5e639..dd9afa47c 100644
--- a/src/console/clients/checker/checks/udp.rs
+++ b/src/console/clients/checker/checks/udp.rs
@@ -4,7 +4,6 @@ use std::time::Duration;
use aquatic_udp_protocol::TransactionId;
use hex_literal::hex;
use serde::Serialize;
-use torrust_tracker_primitives::info_hash::InfoHash;
use crate::console::clients::udp::checker::Client;
use crate::console::clients::udp::Error;
@@ -29,7 +28,7 @@ pub async fn run(udp_trackers: Vec, timeout: Duration) -> Vec, timeout: Duration) -> Vec, timeout: Duration) -> Vec Peer {
Peer {
- peer_id: peer::Id(*b"-qB00000000000000001"),
+ peer_id: PeerId(*b"-qB00000000000000001"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8081),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Completed,
}
}
@@ -1256,12 +1257,12 @@ mod tests {
/// Sample peer when for tests that need more than one peer
fn sample_peer_2() -> Peer {
Peer {
- peer_id: peer::Id(*b"-qB00000000000000002"),
+ peer_id: PeerId(*b"-qB00000000000000002"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 2)), 8082),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Completed,
}
}
@@ -1287,12 +1288,12 @@ mod tests {
/// announcing the `AnnounceEvent::Completed` event.
fn complete_peer() -> Peer {
Peer {
- peer_id: peer::Id(*b"-qB00000000000000000"),
+ peer_id: PeerId(*b"-qB00000000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0), // No bytes left to download
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0), // No bytes left to download
event: AnnounceEvent::Completed,
}
}
@@ -1300,12 +1301,12 @@ mod tests {
/// A peer that counts as `incomplete` is swarm metadata
fn incomplete_peer() -> Peer {
Peer {
- peer_id: peer::Id(*b"-qB00000000000000000"),
+ peer_id: PeerId(*b"-qB00000000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(1000), // Still bytes to download
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(1000), // Still bytes to download
event: AnnounceEvent::Started,
}
}
@@ -2035,7 +2036,7 @@ mod tests {
mod handling_torrent_persistence {
- use torrust_tracker_primitives::announce_event::AnnounceEvent;
+ use aquatic_udp_protocol::AnnounceEvent;
use torrust_tracker_torrent_repository::entry::EntrySync;
use torrust_tracker_torrent_repository::repository::Repository;
diff --git a/src/core/peer_tests.rs b/src/core/peer_tests.rs
index d30d73db3..b60ca3f6d 100644
--- a/src/core/peer_tests.rs
+++ b/src/core/peer_tests.rs
@@ -2,10 +2,10 @@
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
+use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes, PeerId};
use torrust_tracker_clock::clock::stopped::Stopped as _;
use torrust_tracker_clock::clock::{self, Time};
-use torrust_tracker_primitives::announce_event::AnnounceEvent;
-use torrust_tracker_primitives::{peer, NumberOfBytes};
+use torrust_tracker_primitives::peer;
use crate::CurrentClock;
@@ -14,12 +14,12 @@ fn it_should_be_serializable() {
clock::Stopped::local_set_to_unix_epoch();
let torrent_peer = peer::Peer {
- peer_id: peer::Id(*b"-qB0000-000000000000"),
+ peer_id: PeerId(*b"-qB0000-000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8080),
updated: CurrentClock::now(),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Started,
};
diff --git a/src/core/services/torrent.rs b/src/core/services/torrent.rs
index 1c337a41d..3b014982d 100644
--- a/src/core/services/torrent.rs
+++ b/src/core/services/torrent.rs
@@ -105,17 +105,17 @@ pub async fn get_torrents(tracker: Arc, info_hashes: &[InfoHash]) -> Ve
mod tests {
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- use torrust_tracker_primitives::announce_event::AnnounceEvent;
- use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch, NumberOfBytes};
+ use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes, PeerId};
+ use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
fn sample_peer() -> peer::Peer {
peer::Peer {
- peer_id: peer::Id(*b"-qB00000000000000000"),
+ peer_id: PeerId(*b"-qB00000000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Started,
}
}
diff --git a/src/servers/apis/v1/context/torrent/resources/peer.rs b/src/servers/apis/v1/context/torrent/resources/peer.rs
index e7a0802c1..dd4a6cc26 100644
--- a/src/servers/apis/v1/context/torrent/resources/peer.rs
+++ b/src/servers/apis/v1/context/torrent/resources/peer.rs
@@ -1,4 +1,5 @@
//! `Peer` and Peer `Id` API resources.
+use aquatic_udp_protocol::PeerId;
use derive_more::From;
use serde::{Deserialize, Serialize};
use torrust_tracker_primitives::peer;
@@ -22,7 +23,7 @@ pub struct Peer {
/// The peer's left bytes (pending to download).
pub left: i64,
/// The peer's event: `started`, `stopped`, `completed`.
- /// See [`AnnounceEvent`](torrust_tracker_primitives::announce_event::AnnounceEvent).
+ /// See [`AnnounceEvent`](aquatic_udp_protocol::AnnounceEvent).
pub event: String,
}
@@ -35,8 +36,9 @@ pub struct Id {
pub client: Option,
}
-impl From for Id {
- fn from(peer_id: peer::Id) -> Self {
+impl From for Id {
+ fn from(peer_id: PeerId) -> Self {
+ let peer_id = peer::Id::from(peer_id);
Id {
id: peer_id.to_hex_string(),
client: peer_id.get_client_name(),
@@ -52,9 +54,9 @@ impl From for Peer {
peer_addr: value.peer_addr.to_string(),
updated: value.updated.as_millis(),
updated_milliseconds_ago: value.updated.as_millis(),
- uploaded: value.uploaded.0,
- downloaded: value.downloaded.0,
- left: value.left.0,
+ uploaded: value.uploaded.0.get(),
+ downloaded: value.downloaded.0.get(),
+ left: value.left.0.get(),
event: format!("{:?}", value.event),
}
}
diff --git a/src/servers/apis/v1/context/torrent/resources/torrent.rs b/src/servers/apis/v1/context/torrent/resources/torrent.rs
index 0d65b3eb6..657382c0c 100644
--- a/src/servers/apis/v1/context/torrent/resources/torrent.rs
+++ b/src/servers/apis/v1/context/torrent/resources/torrent.rs
@@ -97,9 +97,9 @@ mod tests {
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::str::FromStr;
- use torrust_tracker_primitives::announce_event::AnnounceEvent;
+ use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes, PeerId};
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch, NumberOfBytes};
+ use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
use super::Torrent;
use crate::core::services::torrent::{BasicInfo, Info};
@@ -108,12 +108,12 @@ mod tests {
fn sample_peer() -> peer::Peer {
peer::Peer {
- peer_id: peer::Id(*b"-qB00000000000000000"),
+ peer_id: PeerId(*b"-qB00000000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Started,
}
}
diff --git a/src/servers/http/percent_encoding.rs b/src/servers/http/percent_encoding.rs
index 90f4b9a43..c3243d597 100644
--- a/src/servers/http/percent_encoding.rs
+++ b/src/servers/http/percent_encoding.rs
@@ -15,6 +15,7 @@
//! -
//! -
//! -
+use aquatic_udp_protocol::PeerId;
use torrust_tracker_primitives::info_hash::{self, InfoHash};
use torrust_tracker_primitives::peer;
@@ -49,7 +50,7 @@ pub fn percent_decode_info_hash(raw_info_hash: &str) -> Result Result Result {
+/// Will return `Err` if if the decoded bytes do not represent a valid [`PeerId`].
+pub fn percent_decode_peer_id(raw_peer_id: &str) -> Result {
let bytes = percent_encoding::percent_decode_str(raw_peer_id).collect::>();
- peer::Id::try_from(bytes)
+ Ok(*peer::Id::try_from(bytes)?)
}
#[cfg(test)]
mod tests {
use std::str::FromStr;
+ use aquatic_udp_protocol::PeerId;
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::peer;
use crate::servers::http::percent_encoding::{percent_decode_info_hash, percent_decode_peer_id};
@@ -112,7 +114,7 @@ mod tests {
let peer_id = percent_decode_peer_id(encoded_peer_id).unwrap();
- assert_eq!(peer_id, peer::Id(*b"-qB00000000000000000"));
+ assert_eq!(peer_id, PeerId(*b"-qB00000000000000000"));
}
#[test]
diff --git a/src/servers/http/v1/extractors/announce_request.rs b/src/servers/http/v1/extractors/announce_request.rs
index d2612f79b..b1d820598 100644
--- a/src/servers/http/v1/extractors/announce_request.rs
+++ b/src/servers/http/v1/extractors/announce_request.rs
@@ -95,8 +95,8 @@ fn extract_announce_from(maybe_raw_query: Option<&str>) -> Result peer::Pee
peer_id: announce_request.peer_id,
peer_addr: SocketAddr::new(*peer_ip, announce_request.port),
updated: CurrentClock::now(),
- uploaded: NumberOfBytes(announce_request.uploaded.unwrap_or(0)),
- downloaded: NumberOfBytes(announce_request.downloaded.unwrap_or(0)),
- left: NumberOfBytes(announce_request.left.unwrap_or(0)),
+ uploaded: announce_request.uploaded.unwrap_or(NumberOfBytes::new(0)),
+ downloaded: announce_request.downloaded.unwrap_or(NumberOfBytes::new(0)),
+ left: announce_request.left.unwrap_or(NumberOfBytes::new(0)),
event: map_to_torrust_event(&announce_request.event),
}
}
@@ -170,8 +170,8 @@ pub fn map_to_torrust_event(event: &Option) -> AnnounceEvent {
#[cfg(test)]
mod tests {
+ use aquatic_udp_protocol::PeerId;
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::peer;
use torrust_tracker_test_helpers::configuration;
use crate::core::services::tracker_factory;
@@ -199,7 +199,7 @@ mod tests {
fn sample_announce_request() -> Announce {
Announce {
info_hash: "3b245504cf5f11bbdbe1201cea6a6bf45aee1bc0".parse::().unwrap(),
- peer_id: "-qB00000000000000001".parse::().unwrap(),
+ peer_id: PeerId(*b"-qB00000000000000001"),
port: 17548,
downloaded: None,
uploaded: None,
diff --git a/src/servers/http/v1/requests/announce.rs b/src/servers/http/v1/requests/announce.rs
index 83cc7ddf9..3253a07c8 100644
--- a/src/servers/http/v1/requests/announce.rs
+++ b/src/servers/http/v1/requests/announce.rs
@@ -5,6 +5,7 @@ use std::fmt;
use std::panic::Location;
use std::str::FromStr;
+use aquatic_udp_protocol::{NumberOfBytes, PeerId};
use thiserror::Error;
use torrust_tracker_located_error::{Located, LocatedError};
use torrust_tracker_primitives::info_hash::{self, InfoHash};
@@ -14,10 +15,6 @@ use crate::servers::http::percent_encoding::{percent_decode_info_hash, percent_d
use crate::servers::http::v1::query::{ParseQueryError, Query};
use crate::servers::http::v1::responses;
-/// The number of bytes `downloaded`, `uploaded` or `left`. It's used in the
-/// `Announce` request for parameters that represent a number of bytes.
-pub type NumberOfBytes = i64;
-
// Query param names
const INFO_HASH: &str = "info_hash";
const PEER_ID: &str = "peer_id";
@@ -32,19 +29,19 @@ const COMPACT: &str = "compact";
/// query params of the request.
///
/// ```rust
+/// use aquatic_udp_protocol::{NumberOfBytes, PeerId};
/// use torrust_tracker::servers::http::v1::requests::announce::{Announce, Compact, Event};
/// use torrust_tracker_primitives::info_hash::InfoHash;
-/// use torrust_tracker_primitives::peer;
///
/// let request = Announce {
/// // Mandatory params
/// info_hash: "3b245504cf5f11bbdbe1201cea6a6bf45aee1bc0".parse::().unwrap(),
-/// peer_id: "-qB00000000000000001".parse::().unwrap(),
+/// peer_id: PeerId(*b"-qB00000000000000001"),
/// port: 17548,
/// // Optional params
-/// downloaded: Some(1),
-/// uploaded: Some(2),
-/// left: Some(3),
+/// downloaded: Some(NumberOfBytes::new(1)),
+/// uploaded: Some(NumberOfBytes::new(1)),
+/// left: Some(NumberOfBytes::new(1)),
/// event: Some(Event::Started),
/// compact: Some(Compact::NotAccepted)
/// };
@@ -62,8 +59,8 @@ pub struct Announce {
// Mandatory params
/// The `InfoHash` of the torrent.
pub info_hash: InfoHash,
- /// The `peer::Id` of the peer.
- pub peer_id: peer::Id,
+ /// The `PeerId` of the peer.
+ pub peer_id: PeerId,
/// The port of the peer.
pub port: u16,
@@ -271,7 +268,7 @@ fn extract_info_hash(query: &Query) -> Result
}
}
-fn extract_peer_id(query: &Query) -> Result {
+fn extract_peer_id(query: &Query) -> Result {
match query.get_param(PEER_ID) {
Some(raw_param) => Ok(
percent_decode_peer_id(&raw_param).map_err(|err| ParseAnnounceQueryError::InvalidPeerIdParam {
@@ -324,13 +321,16 @@ fn extract_number_of_bytes_from_param(param_name: &str, query: &Query) -> Result
location: Location::caller(),
})?;
- Ok(Some(i64::try_from(number_of_bytes).map_err(|_e| {
- ParseAnnounceQueryError::NumberOfBytesOverflow {
+ let number_of_bytes =
+ i64::try_from(number_of_bytes).map_err(|_e| ParseAnnounceQueryError::NumberOfBytesOverflow {
param_name: param_name.to_owned(),
param_value: raw_param.clone(),
location: Location::caller(),
- }
- })?))
+ })?;
+
+ let number_of_bytes = NumberOfBytes::new(number_of_bytes);
+
+ Ok(Some(number_of_bytes))
}
None => Ok(None),
}
@@ -355,8 +355,8 @@ mod tests {
mod announce_request {
+ use aquatic_udp_protocol::{NumberOfBytes, PeerId};
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::peer;
use crate::servers::http::v1::query::Query;
use crate::servers::http::v1::requests::announce::{
@@ -380,7 +380,7 @@ mod tests {
announce_request,
Announce {
info_hash: "3b245504cf5f11bbdbe1201cea6a6bf45aee1bc0".parse::().unwrap(),
- peer_id: "-qB00000000000000001".parse::().unwrap(),
+ peer_id: PeerId(*b"-qB00000000000000001"),
port: 17548,
downloaded: None,
uploaded: None,
@@ -413,11 +413,11 @@ mod tests {
announce_request,
Announce {
info_hash: "3b245504cf5f11bbdbe1201cea6a6bf45aee1bc0".parse::().unwrap(),
- peer_id: "-qB00000000000000001".parse::().unwrap(),
+ peer_id: PeerId(*b"-qB00000000000000001"),
port: 17548,
- downloaded: Some(1),
- uploaded: Some(2),
- left: Some(3),
+ downloaded: Some(NumberOfBytes::new(1)),
+ uploaded: Some(NumberOfBytes::new(2)),
+ left: Some(NumberOfBytes::new(3)),
event: Some(Event::Started),
compact: Some(Compact::NotAccepted),
}
diff --git a/src/servers/http/v1/requests/scrape.rs b/src/servers/http/v1/requests/scrape.rs
index 19f6e35a6..c61d3be1f 100644
--- a/src/servers/http/v1/requests/scrape.rs
+++ b/src/servers/http/v1/requests/scrape.rs
@@ -11,8 +11,6 @@ use crate::servers::http::percent_encoding::percent_decode_info_hash;
use crate::servers::http::v1::query::Query;
use crate::servers::http::v1::responses;
-pub type NumberOfBytes = i64;
-
// Query param names
const INFO_HASH: &str = "info_hash";
diff --git a/src/servers/http/v1/responses/announce.rs b/src/servers/http/v1/responses/announce.rs
index 134da919e..f223a4bb0 100644
--- a/src/servers/http/v1/responses/announce.rs
+++ b/src/servers/http/v1/responses/announce.rs
@@ -178,7 +178,7 @@ impl peer::Encoding for NormalPeer {}
impl From for NormalPeer {
fn from(peer: peer::Peer) -> Self {
NormalPeer {
- peer_id: peer.peer_id.to_bytes(),
+ peer_id: peer.peer_id.0,
ip: peer.peer_addr.ip(),
port: peer.peer_addr.port(),
}
@@ -300,8 +300,8 @@ mod tests {
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
use std::sync::Arc;
+ use aquatic_udp_protocol::PeerId;
use torrust_tracker_configuration::AnnouncePolicy;
- use torrust_tracker_primitives::peer;
use torrust_tracker_primitives::peer::fixture::PeerBuilder;
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
@@ -324,12 +324,12 @@ mod tests {
let policy = AnnouncePolicy::new(111, 222);
let peer_ipv4 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_peer_addr(&SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0x69, 0x69, 0x69, 0x69)), 0x7070))
.build();
let peer_ipv6 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000002"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000002"))
.with_peer_addr(&SocketAddr::new(
IpAddr::V6(Ipv6Addr::new(0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969)),
0x7070,
diff --git a/src/servers/http/v1/responses/scrape.rs b/src/servers/http/v1/responses/scrape.rs
index 11f361028..9690d4392 100644
--- a/src/servers/http/v1/responses/scrape.rs
+++ b/src/servers/http/v1/responses/scrape.rs
@@ -17,7 +17,7 @@ use crate::core::ScrapeData;
/// use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
/// use torrust_tracker::core::ScrapeData;
///
-/// let info_hash = InfoHash([0x69; 20]);
+/// let info_hash = InfoHash::from_bytes(&[0x69; 20]);
/// let mut scrape_data = ScrapeData::empty();
/// scrape_data.add_file(
/// &info_hash,
@@ -99,7 +99,7 @@ mod tests {
use crate::servers::http::v1::responses::scrape::Bencoded;
fn sample_scrape_data() -> ScrapeData {
- let info_hash = InfoHash([0x69; 20]);
+ let info_hash = InfoHash::from_bytes(&[0x69; 20]);
let mut scrape_data = ScrapeData::empty();
scrape_data.add_file(
&info_hash,
diff --git a/src/servers/http/v1/services/announce.rs b/src/servers/http/v1/services/announce.rs
index f5f730ae2..6b7f8af5a 100644
--- a/src/servers/http/v1/services/announce.rs
+++ b/src/servers/http/v1/services/announce.rs
@@ -48,9 +48,9 @@ pub async fn invoke(tracker: Arc, info_hash: InfoHash, peer: &mut peer:
mod tests {
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
- use torrust_tracker_primitives::announce_event::AnnounceEvent;
+ use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes, PeerId};
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch, NumberOfBytes};
+ use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
use torrust_tracker_test_helpers::configuration;
use crate::core::services::tracker_factory;
@@ -79,12 +79,12 @@ mod tests {
fn sample_peer() -> peer::Peer {
peer::Peer {
- peer_id: peer::Id(*b"-qB00000000000000000"),
+ peer_id: PeerId(*b"-qB00000000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Started,
}
}
diff --git a/src/servers/http/v1/services/scrape.rs b/src/servers/http/v1/services/scrape.rs
index b83abb321..42fe4b518 100644
--- a/src/servers/http/v1/services/scrape.rs
+++ b/src/servers/http/v1/services/scrape.rs
@@ -61,9 +61,9 @@ mod tests {
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- use torrust_tracker_primitives::announce_event::AnnounceEvent;
+ use aquatic_udp_protocol::{AnnounceEvent, NumberOfBytes, PeerId};
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch, NumberOfBytes};
+ use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
use torrust_tracker_test_helpers::configuration;
use crate::core::services::tracker_factory;
@@ -83,12 +83,12 @@ mod tests {
fn sample_peer() -> peer::Peer {
peer::Peer {
- peer_id: peer::Id(*b"-qB00000000000000000"),
+ peer_id: PeerId(*b"-qB00000000000000000"),
peer_addr: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1)), 8080),
updated: DurationSinceUnixEpoch::new(1_669_397_478_934, 0),
- uploaded: NumberOfBytes(0),
- downloaded: NumberOfBytes(0),
- left: NumberOfBytes(0),
+ uploaded: NumberOfBytes::new(0),
+ downloaded: NumberOfBytes::new(0),
+ left: NumberOfBytes::new(0),
event: AnnounceEvent::Started,
}
}
diff --git a/src/servers/udp/handlers.rs b/src/servers/udp/handlers.rs
index 53683fbb9..1ef404ff0 100644
--- a/src/servers/udp/handlers.rs
+++ b/src/servers/udp/handlers.rs
@@ -22,7 +22,6 @@ use crate::core::{statistics, ScrapeData, Tracker};
use crate::servers::udp::error::Error;
use crate::servers::udp::logging::{log_bad_request, log_error_response, log_request, log_response};
use crate::servers::udp::peer_builder;
-use crate::servers::udp::request::AnnounceWrapper;
use crate::shared::bit_torrent::common::MAX_SCRAPE_TORRENTS;
/// It handles the incoming UDP packets.
@@ -152,9 +151,7 @@ pub async fn handle_announce(
check(&remote_addr, &from_connection_id(&announce_request.connection_id))?;
- let wrapped_announce_request = AnnounceWrapper::new(announce_request);
-
- let info_hash = wrapped_announce_request.info_hash;
+ let info_hash = announce_request.info_hash.into();
let remote_client_ip = remote_addr.ip();
// Authorization
@@ -162,7 +159,7 @@ pub async fn handle_announce(
source: (Arc::new(e) as Arc).into(),
})?;
- let mut peer = peer_builder::from_request(&wrapped_announce_request, &remote_client_ip);
+ let mut peer = peer_builder::from_request(announce_request, &remote_client_ip);
let response = tracker.announce(&info_hash, &mut peer, &remote_client_ip);
@@ -179,7 +176,7 @@ pub async fn handle_announce(
if remote_addr.is_ipv4() {
let announce_response = AnnounceResponse {
fixed: AnnounceResponseFixedData {
- transaction_id: wrapped_announce_request.announce_request.transaction_id,
+ transaction_id: announce_request.transaction_id,
announce_interval: AnnounceInterval(I32::new(i64::from(tracker.get_announce_policy().interval) as i32)),
leechers: NumberOfPeers(I32::new(i64::from(response.stats.incomplete) as i32)),
seeders: NumberOfPeers(I32::new(i64::from(response.stats.complete) as i32)),
@@ -206,7 +203,7 @@ pub async fn handle_announce(
} else {
let announce_response = AnnounceResponse {
fixed: AnnounceResponseFixedData {
- transaction_id: wrapped_announce_request.announce_request.transaction_id,
+ transaction_id: announce_request.transaction_id,
announce_interval: AnnounceInterval(I32::new(i64::from(tracker.get_announce_policy().interval) as i32)),
leechers: NumberOfPeers(I32::new(i64::from(response.stats.incomplete) as i32)),
seeders: NumberOfPeers(I32::new(i64::from(response.stats.complete) as i32)),
@@ -243,9 +240,9 @@ pub async fn handle_scrape(remote_addr: SocketAddr, request: &ScrapeRequest, tra
debug!("udp scrape request: {:#?}", request);
// Convert from aquatic infohashes
- let mut info_hashes = vec![];
+ let mut info_hashes: Vec = vec![];
for info_hash in &request.info_hashes {
- info_hashes.push(InfoHash(info_hash.0));
+ info_hashes.push((*info_hash).into());
}
let scrape_data = if tracker.requires_authentication() {
@@ -321,9 +318,10 @@ mod tests {
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
use std::sync::Arc;
+ use aquatic_udp_protocol::{NumberOfBytes, PeerId};
use torrust_tracker_clock::clock::Time;
use torrust_tracker_configuration::Configuration;
- use torrust_tracker_primitives::{peer, NumberOfBytes};
+ use torrust_tracker_primitives::peer;
use torrust_tracker_test_helpers::configuration;
use crate::core::services::tracker_factory;
@@ -393,14 +391,14 @@ mod tests {
}
#[must_use]
- pub fn with_peer_id(mut self, peer_id: peer::Id) -> Self {
+ pub fn with_peer_id(mut self, peer_id: PeerId) -> Self {
self.peer.peer_id = peer_id;
self
}
#[must_use]
pub fn with_number_of_bytes_left(mut self, left: i64) -> Self {
- self.peer.left = NumberOfBytes(left);
+ self.peer.left = NumberOfBytes::new(left);
self
}
@@ -623,7 +621,6 @@ mod tests {
PeerId as AquaticPeerId, Response, ResponsePeer,
};
use mockall::predicate::eq;
- use torrust_tracker_primitives::peer;
use crate::core::{self, statistics};
use crate::servers::udp::connection_cookie::{into_connection_id, make};
@@ -657,7 +654,7 @@ mod tests {
let peers = tracker.get_torrent_peers(&info_hash.0.into());
let expected_peer = TorrentPeerBuilder::new()
- .with_peer_id(peer::Id(peer_id.0))
+ .with_peer_id(peer_id)
.with_peer_address(SocketAddr::new(IpAddr::V4(client_ip), client_port))
.into();
@@ -731,7 +728,7 @@ mod tests {
let peer_id = AquaticPeerId([255u8; 20]);
let peer_using_ipv6 = TorrentPeerBuilder::new()
- .with_peer_id(peer::Id(peer_id.0))
+ .with_peer_id(peer_id)
.with_peer_address(SocketAddr::new(IpAddr::V6(client_ip_v6), client_port))
.into();
@@ -797,7 +794,6 @@ mod tests {
use std::sync::Arc;
use aquatic_udp_protocol::{InfoHash as AquaticInfoHash, PeerId as AquaticPeerId};
- use torrust_tracker_primitives::peer;
use crate::servers::udp::connection_cookie::{into_connection_id, make};
use crate::servers::udp::handlers::handle_announce;
@@ -830,7 +826,7 @@ mod tests {
let external_ip_in_tracker_configuration = tracker.get_maybe_external_ip().unwrap();
let expected_peer = TorrentPeerBuilder::new()
- .with_peer_id(peer::Id(peer_id.0))
+ .with_peer_id(peer_id)
.with_peer_address(SocketAddr::new(external_ip_in_tracker_configuration, client_port))
.into();
@@ -850,7 +846,6 @@ mod tests {
PeerId as AquaticPeerId, Response, ResponsePeer,
};
use mockall::predicate::eq;
- use torrust_tracker_primitives::peer;
use crate::core::{self, statistics};
use crate::servers::udp::connection_cookie::{into_connection_id, make};
@@ -885,7 +880,7 @@ mod tests {
let peers = tracker.get_torrent_peers(&info_hash.0.into());
let expected_peer = TorrentPeerBuilder::new()
- .with_peer_id(peer::Id(peer_id.0))
+ .with_peer_id(peer_id)
.with_peer_address(SocketAddr::new(IpAddr::V6(client_ip_v6), client_port))
.into();
@@ -962,7 +957,7 @@ mod tests {
let peer_id = AquaticPeerId([255u8; 20]);
let peer_using_ipv4 = TorrentPeerBuilder::new()
- .with_peer_id(peer::Id(peer_id.0))
+ .with_peer_id(peer_id)
.with_peer_address(SocketAddr::new(IpAddr::V4(client_ip_v4), client_port))
.into();
@@ -1090,10 +1085,9 @@ mod tests {
use std::sync::Arc;
use aquatic_udp_protocol::{
- InfoHash, NumberOfDownloads, NumberOfPeers, Response, ScrapeRequest, ScrapeResponse, TorrentScrapeStatistics,
+ InfoHash, NumberOfDownloads, NumberOfPeers, PeerId, Response, ScrapeRequest, ScrapeResponse, TorrentScrapeStatistics,
TransactionId,
};
- use torrust_tracker_primitives::peer;
use super::TorrentPeerBuilder;
use crate::core::{self};
@@ -1136,10 +1130,10 @@ mod tests {
}
async fn add_a_seeder(tracker: Arc, remote_addr: &SocketAddr, info_hash: &InfoHash) {
- let peer_id = peer::Id([255u8; 20]);
+ let peer_id = PeerId([255u8; 20]);
let peer = TorrentPeerBuilder::new()
- .with_peer_id(peer::Id(peer_id.0))
+ .with_peer_id(peer_id)
.with_peer_address(*remote_addr)
.with_number_of_bytes_left(0)
.into();
diff --git a/src/servers/udp/mod.rs b/src/servers/udp/mod.rs
index 8ea05d5b1..91b19a91d 100644
--- a/src/servers/udp/mod.rs
+++ b/src/servers/udp/mod.rs
@@ -61,9 +61,6 @@
//! UDP packet -> Aquatic Struct Request -> [Torrust Struct Request] -> Tracker -> Aquatic Struct Response -> UDP packet
//! ```
//!
-//! For the `Announce` request there is a wrapper struct [`AnnounceWrapper`](crate::servers::udp::request::AnnounceWrapper).
-//! It was added to add an extra field with the internal [`InfoHash`](torrust_tracker_primitives::info_hash::InfoHash) struct.
-//!
//! ### Connect
//!
//! `Connect` requests are used to get a connection ID which must be provided on
@@ -646,7 +643,6 @@ pub mod error;
pub mod handlers;
pub mod logging;
pub mod peer_builder;
-pub mod request;
pub mod server;
pub const UDP_TRACKER_LOG_TARGET: &str = "UDP TRACKER";
diff --git a/src/servers/udp/peer_builder.rs b/src/servers/udp/peer_builder.rs
index e54a23443..a42ddfaa5 100644
--- a/src/servers/udp/peer_builder.rs
+++ b/src/servers/udp/peer_builder.rs
@@ -2,10 +2,8 @@
use std::net::{IpAddr, SocketAddr};
use torrust_tracker_clock::clock::Time;
-use torrust_tracker_primitives::announce_event::AnnounceEvent;
-use torrust_tracker_primitives::{peer, NumberOfBytes};
+use torrust_tracker_primitives::peer;
-use super::request::AnnounceWrapper;
use crate::CurrentClock;
/// Extracts the [`peer::Peer`] info from the
@@ -13,24 +11,16 @@ use crate::CurrentClock;
///
/// # Arguments
///
-/// * `announce_wrapper` - The announce request to extract the peer info from.
/// * `peer_ip` - The real IP address of the peer, not the one in the announce request.
#[must_use]
-pub fn from_request(announce_wrapper: &AnnounceWrapper, peer_ip: &IpAddr) -> peer::Peer {
- let announce_event = match aquatic_udp_protocol::AnnounceEvent::from(announce_wrapper.announce_request.event) {
- aquatic_udp_protocol::AnnounceEvent::Started => AnnounceEvent::Started,
- aquatic_udp_protocol::AnnounceEvent::Stopped => AnnounceEvent::Stopped,
- aquatic_udp_protocol::AnnounceEvent::Completed => AnnounceEvent::Completed,
- aquatic_udp_protocol::AnnounceEvent::None => AnnounceEvent::None,
- };
-
+pub fn from_request(announce_request: &aquatic_udp_protocol::AnnounceRequest, peer_ip: &IpAddr) -> peer::Peer {
peer::Peer {
- peer_id: peer::Id(announce_wrapper.announce_request.peer_id.0),
- peer_addr: SocketAddr::new(*peer_ip, announce_wrapper.announce_request.port.0.into()),
+ peer_id: announce_request.peer_id,
+ peer_addr: SocketAddr::new(*peer_ip, announce_request.port.0.into()),
updated: CurrentClock::now(),
- uploaded: NumberOfBytes(announce_wrapper.announce_request.bytes_uploaded.0.into()),
- downloaded: NumberOfBytes(announce_wrapper.announce_request.bytes_downloaded.0.into()),
- left: NumberOfBytes(announce_wrapper.announce_request.bytes_left.0.into()),
- event: announce_event,
+ uploaded: announce_request.bytes_uploaded,
+ downloaded: announce_request.bytes_downloaded,
+ left: announce_request.bytes_left,
+ event: announce_request.event.into(),
}
}
diff --git a/src/servers/udp/request.rs b/src/servers/udp/request.rs
deleted file mode 100644
index f95fec07a..000000000
--- a/src/servers/udp/request.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-//! UDP request types.
-//!
-//! Torrust Tracker uses the [`aquatic_udp_protocol`](https://crates.io/crates/aquatic_udp_protocol)
-//! crate to parse and serialize UDP requests.
-//!
-//! Some of the type in this module are wrappers around the types in the
-//! `aquatic_udp_protocol` crate.
-use aquatic_udp_protocol::AnnounceRequest;
-use torrust_tracker_primitives::info_hash::InfoHash;
-
-/// Wrapper around [`AnnounceRequest`].
-pub struct AnnounceWrapper {
- /// [`AnnounceRequest`] to wrap.
- pub announce_request: AnnounceRequest,
- /// Info hash of the torrent.
- pub info_hash: InfoHash,
-}
-
-impl AnnounceWrapper {
- /// Creates a new [`AnnounceWrapper`] from an [`AnnounceRequest`].
- #[must_use]
- pub fn new(announce_request: &AnnounceRequest) -> Self {
- AnnounceWrapper {
- announce_request: *announce_request,
- info_hash: InfoHash(announce_request.info_hash.0),
- }
- }
-}
diff --git a/src/shared/bit_torrent/tracker/http/client/requests/announce.rs b/src/shared/bit_torrent/tracker/http/client/requests/announce.rs
index b872e76e9..3c6b14222 100644
--- a/src/shared/bit_torrent/tracker/http/client/requests/announce.rs
+++ b/src/shared/bit_torrent/tracker/http/client/requests/announce.rs
@@ -2,9 +2,9 @@ use std::fmt;
use std::net::{IpAddr, Ipv4Addr};
use std::str::FromStr;
+use aquatic_udp_protocol::PeerId;
use serde_repr::Serialize_repr;
use torrust_tracker_primitives::info_hash::InfoHash;
-use torrust_tracker_primitives::peer;
use crate::shared::bit_torrent::tracker::http::{percent_encode_byte_array, ByteArray20};
@@ -99,7 +99,7 @@ impl QueryBuilder {
peer_addr: IpAddr::V4(Ipv4Addr::new(192, 168, 1, 88)),
downloaded: 0,
uploaded: 0,
- peer_id: peer::Id(*b"-qB00000000000000001").0,
+ peer_id: PeerId(*b"-qB00000000000000001").0,
port: 17548,
left: 0,
event: Some(Event::Completed),
@@ -117,7 +117,7 @@ impl QueryBuilder {
}
#[must_use]
- pub fn with_peer_id(mut self, peer_id: &peer::Id) -> Self {
+ pub fn with_peer_id(mut self, peer_id: &PeerId) -> Self {
self.announce_query.peer_id = peer_id.0;
self
}
diff --git a/src/shared/bit_torrent/tracker/http/client/responses/announce.rs b/src/shared/bit_torrent/tracker/http/client/responses/announce.rs
index 15ec446cb..7f2d3611c 100644
--- a/src/shared/bit_torrent/tracker/http/client/responses/announce.rs
+++ b/src/shared/bit_torrent/tracker/http/client/responses/announce.rs
@@ -2,6 +2,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use serde::{Deserialize, Serialize};
use torrust_tracker_primitives::peer;
+use zerocopy::AsBytes as _;
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct Announce {
@@ -25,7 +26,7 @@ pub struct DictionaryPeer {
impl From for DictionaryPeer {
fn from(peer: peer::Peer) -> Self {
DictionaryPeer {
- peer_id: peer.peer_id.to_bytes().to_vec(),
+ peer_id: peer.peer_id.as_bytes().to_vec(),
ip: peer.peer_addr.ip().to_string(),
port: peer.peer_addr.port(),
}
diff --git a/tests/servers/http/requests/announce.rs b/tests/servers/http/requests/announce.rs
index 061990621..bcbb36852 100644
--- a/tests/servers/http/requests/announce.rs
+++ b/tests/servers/http/requests/announce.rs
@@ -2,9 +2,9 @@ use std::fmt;
use std::net::{IpAddr, Ipv4Addr};
use std::str::FromStr;
+use aquatic_udp_protocol::PeerId;
use serde_repr::Serialize_repr;
use torrust_tracker_primitives::info_hash::InfoHash;
-use torrust_tracker_primitives::peer;
use crate::servers::http::{percent_encode_byte_array, ByteArray20};
@@ -93,7 +93,7 @@ impl QueryBuilder {
peer_addr: IpAddr::V4(Ipv4Addr::new(192, 168, 1, 88)),
downloaded: 0,
uploaded: 0,
- peer_id: peer::Id(*b"-qB00000000000000001").0,
+ peer_id: PeerId(*b"-qB00000000000000001").0,
port: 17548,
left: 0,
event: Some(Event::Completed),
@@ -109,7 +109,7 @@ impl QueryBuilder {
self
}
- pub fn with_peer_id(mut self, peer_id: &peer::Id) -> Self {
+ pub fn with_peer_id(mut self, peer_id: &PeerId) -> Self {
self.announce_query.peer_id = peer_id.0;
self
}
diff --git a/tests/servers/http/responses/announce.rs b/tests/servers/http/responses/announce.rs
index 2b49b4405..554e5ab40 100644
--- a/tests/servers/http/responses/announce.rs
+++ b/tests/servers/http/responses/announce.rs
@@ -2,6 +2,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use serde::{Deserialize, Serialize};
use torrust_tracker_primitives::peer;
+use zerocopy::AsBytes as _;
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub struct Announce {
@@ -25,7 +26,7 @@ pub struct DictionaryPeer {
impl From for DictionaryPeer {
fn from(peer: peer::Peer) -> Self {
DictionaryPeer {
- peer_id: peer.peer_id.to_bytes().to_vec(),
+ peer_id: peer.peer_id.as_bytes().to_vec(),
ip: peer.peer_addr.ip().to_string(),
port: peer.peer_addr.port(),
}
diff --git a/tests/servers/http/v1/contract.rs b/tests/servers/http/v1/contract.rs
index 14c237984..edc06fb07 100644
--- a/tests/servers/http/v1/contract.rs
+++ b/tests/servers/http/v1/contract.rs
@@ -86,11 +86,11 @@ mod for_all_config_modes {
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV6};
use std::str::FromStr;
+ use aquatic_udp_protocol::PeerId;
use local_ip_address::local_ip;
use reqwest::{Response, StatusCode};
use tokio::net::TcpListener;
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::peer;
use torrust_tracker_primitives::peer::fixture::PeerBuilder;
use torrust_tracker_test_helpers::configuration;
@@ -410,9 +410,7 @@ mod for_all_config_modes {
let info_hash = InfoHash::from_str("9c38422213e30bff212b30c360d26f9a02136422").unwrap();
// Peer 1
- let previously_announced_peer = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
- .build();
+ let previously_announced_peer = PeerBuilder::default().with_peer_id(&PeerId(*b"-qB00000000000000001")).build();
// Add the Peer 1
env.add_torrent_peer(&info_hash, &previously_announced_peer);
@@ -422,7 +420,7 @@ mod for_all_config_modes {
.announce(
&QueryBuilder::default()
.with_info_hash(&info_hash)
- .with_peer_id(&peer::Id(*b"-qB00000000000000002"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000002"))
.query(),
)
.await;
@@ -453,14 +451,14 @@ mod for_all_config_modes {
// Announce a peer using IPV4
let peer_using_ipv4 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_peer_addr(&SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0x69, 0x69, 0x69, 0x69)), 8080))
.build();
env.add_torrent_peer(&info_hash, &peer_using_ipv4);
// Announce a peer using IPV6
let peer_using_ipv6 = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000002"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000002"))
.with_peer_addr(&SocketAddr::new(
IpAddr::V6(Ipv6Addr::new(0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969)),
8080,
@@ -473,7 +471,7 @@ mod for_all_config_modes {
.announce(
&QueryBuilder::default()
.with_info_hash(&info_hash)
- .with_peer_id(&peer::Id(*b"-qB00000000000000003"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000003"))
.query(),
)
.await;
@@ -531,9 +529,7 @@ mod for_all_config_modes {
let info_hash = InfoHash::from_str("9c38422213e30bff212b30c360d26f9a02136422").unwrap();
// Peer 1
- let previously_announced_peer = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
- .build();
+ let previously_announced_peer = PeerBuilder::default().with_peer_id(&PeerId(*b"-qB00000000000000001")).build();
// Add the Peer 1
env.add_torrent_peer(&info_hash, &previously_announced_peer);
@@ -543,7 +539,7 @@ mod for_all_config_modes {
.announce(
&QueryBuilder::default()
.with_info_hash(&info_hash)
- .with_peer_id(&peer::Id(*b"-qB00000000000000002"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000002"))
.with_compact(Compact::Accepted)
.query(),
)
@@ -572,9 +568,7 @@ mod for_all_config_modes {
let info_hash = InfoHash::from_str("9c38422213e30bff212b30c360d26f9a02136422").unwrap();
// Peer 1
- let previously_announced_peer = PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
- .build();
+ let previously_announced_peer = PeerBuilder::default().with_peer_id(&PeerId(*b"-qB00000000000000001")).build();
// Add the Peer 1
env.add_torrent_peer(&info_hash, &previously_announced_peer);
@@ -586,7 +580,7 @@ mod for_all_config_modes {
.announce(
&QueryBuilder::default()
.with_info_hash(&info_hash)
- .with_peer_id(&peer::Id(*b"-qB00000000000000002"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000002"))
.without_compact()
.query(),
)
@@ -886,9 +880,9 @@ mod for_all_config_modes {
use std::net::{IpAddr, Ipv6Addr, SocketAddrV6};
use std::str::FromStr;
+ use aquatic_udp_protocol::PeerId;
use tokio::net::TcpListener;
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::peer;
use torrust_tracker_primitives::peer::fixture::PeerBuilder;
use torrust_tracker_test_helpers::configuration;
@@ -939,7 +933,7 @@ mod for_all_config_modes {
env.add_torrent_peer(
&info_hash,
&PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_bytes_pending_to_download(1)
.build(),
);
@@ -977,7 +971,7 @@ mod for_all_config_modes {
env.add_torrent_peer(
&info_hash,
&PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_no_bytes_pending_to_download()
.build(),
);
@@ -1158,8 +1152,8 @@ mod configured_as_whitelisted {
mod receiving_an_scrape_request {
use std::str::FromStr;
+ use aquatic_udp_protocol::PeerId;
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::peer;
use torrust_tracker_primitives::peer::fixture::PeerBuilder;
use torrust_tracker_test_helpers::configuration;
@@ -1177,7 +1171,7 @@ mod configured_as_whitelisted {
env.add_torrent_peer(
&info_hash,
&PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_bytes_pending_to_download(1)
.build(),
);
@@ -1206,7 +1200,7 @@ mod configured_as_whitelisted {
env.add_torrent_peer(
&info_hash,
&PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_bytes_pending_to_download(1)
.build(),
);
@@ -1324,9 +1318,9 @@ mod configured_as_private {
use std::str::FromStr;
use std::time::Duration;
+ use aquatic_udp_protocol::PeerId;
use torrust_tracker::core::auth::Key;
use torrust_tracker_primitives::info_hash::InfoHash;
- use torrust_tracker_primitives::peer;
use torrust_tracker_primitives::peer::fixture::PeerBuilder;
use torrust_tracker_test_helpers::configuration;
@@ -1359,7 +1353,7 @@ mod configured_as_private {
env.add_torrent_peer(
&info_hash,
&PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_bytes_pending_to_download(1)
.build(),
);
@@ -1388,7 +1382,7 @@ mod configured_as_private {
env.add_torrent_peer(
&info_hash,
&PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_bytes_pending_to_download(1)
.build(),
);
@@ -1431,7 +1425,7 @@ mod configured_as_private {
env.add_torrent_peer(
&info_hash,
&PeerBuilder::default()
- .with_peer_id(&peer::Id(*b"-qB00000000000000001"))
+ .with_peer_id(&PeerId(*b"-qB00000000000000001"))
.with_bytes_pending_to_download(1)
.build(),
);