Skip to content

Commit 00af70f

Browse files
committed
dev: remove announce event wrapper
1 parent 325df70 commit 00af70f

17 files changed

Lines changed: 61 additions & 80 deletions

File tree

packages/primitives/src/announce_event.rs

Lines changed: 0 additions & 43 deletions
This file was deleted.

packages/primitives/src/lib.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
use std::collections::BTreeMap;
88
use std::time::Duration;
99

10+
pub use aquatic_udp_protocol::{AnnounceEvent, AnnounceEventBytes};
1011
use info_hash::InfoHash;
1112
use serde::{Deserialize, Serialize};
1213

13-
pub mod announce_event;
1414
pub mod info_hash;
1515
pub mod pagination;
1616
pub mod peer;
@@ -29,6 +29,29 @@ pub fn ser_unix_time_value<S: serde::Serializer>(unix_time_value: &DurationSince
2929
ser.serialize_u64(unix_time_value.as_millis() as u64)
3030
}
3131

32+
#[derive(Serialize)]
33+
pub enum AnnounceEventSer {
34+
Started,
35+
Stopped,
36+
Completed,
37+
None,
38+
}
39+
40+
/// Serializes a `DurationSinceUnixEpoch` as a Unix timestamp in milliseconds.
41+
/// # Errors
42+
///
43+
/// Will return `serde::Serializer::Error` if unable to serialize the `unix_time_value`.
44+
pub fn ser_announce_event<S: serde::Serializer>(announce_event: &AnnounceEvent, ser: S) -> Result<S::Ok, S::Error> {
45+
let event_ser = match announce_event {
46+
AnnounceEvent::Started => AnnounceEventSer::Started,
47+
AnnounceEvent::Stopped => AnnounceEventSer::Stopped,
48+
AnnounceEvent::Completed => AnnounceEventSer::Completed,
49+
AnnounceEvent::None => AnnounceEventSer::None,
50+
};
51+
52+
ser.serialize_some(&event_ser)
53+
}
54+
3255
/// IP version used by the peer to connect to the tracker: IPv4 or IPv6
3356
#[derive(PartialEq, Eq, Debug)]
3457
pub enum IPVersion {

packages/primitives/src/peer.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
use std::net::{IpAddr, SocketAddr};
2525
use std::sync::Arc;
2626

27+
use aquatic_udp_protocol::AnnounceEvent;
2728
use serde::Serialize;
2829

29-
use crate::announce_event::AnnounceEvent;
30-
use crate::{ser_unix_time_value, DurationSinceUnixEpoch, IPVersion, NumberOfBytes};
30+
use crate::{ser_announce_event, ser_unix_time_value, DurationSinceUnixEpoch, IPVersion, NumberOfBytes};
3131

3232
/// Peer struct used by the core `Tracker`.
3333
///
@@ -51,7 +51,7 @@ use crate::{ser_unix_time_value, DurationSinceUnixEpoch, IPVersion, NumberOfByte
5151
/// event: AnnounceEvent::Started,
5252
/// };
5353
/// ```
54-
#[derive(Debug, Clone, Serialize, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
54+
#[derive(Debug, Clone, Serialize, Copy, PartialEq, Eq, Hash)]
5555
pub struct Peer {
5656
/// ID used by the downloader peer
5757
pub peer_id: Id,
@@ -67,9 +67,22 @@ pub struct Peer {
6767
/// The number of bytes this peer still has to download
6868
pub left: NumberOfBytes,
6969
/// This is an optional key which maps to started, completed, or stopped (or empty, which is the same as not being present).
70+
#[serde(serialize_with = "ser_announce_event")]
7071
pub event: AnnounceEvent,
7172
}
7273

74+
impl Ord for Peer {
75+
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
76+
self.peer_id.cmp(&other.peer_id)
77+
}
78+
}
79+
80+
impl PartialOrd for Peer {
81+
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
82+
Some(self.peer_id.cmp(&other.peer_id))
83+
}
84+
}
85+
7386
pub trait ReadInfo {
7487
fn is_seeder(&self) -> bool;
7588
fn get_event(&self) -> AnnounceEvent;
@@ -344,8 +357,9 @@ impl<P: Encoding> FromIterator<Peer> for Vec<P> {
344357
pub mod fixture {
345358
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
346359

360+
use aquatic_udp_protocol::AnnounceEvent;
361+
347362
use super::{Id, Peer};
348-
use crate::announce_event::AnnounceEvent;
349363
use crate::{DurationSinceUnixEpoch, NumberOfBytes};
350364

351365
#[derive(PartialEq, Debug)]

packages/torrent-repository/benches/helpers/utils.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
use std::collections::HashSet;
22
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
33

4-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
54
use torrust_tracker_primitives::info_hash::InfoHash;
65
use torrust_tracker_primitives::peer::{Id, Peer};
7-
use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfBytes};
6+
use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes};
87

98
pub const DEFAULT_PEER: Peer = Peer {
109
peer_id: Id([0; 20]),

packages/torrent-repository/src/entry/single.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ use std::net::SocketAddr;
22
use std::sync::Arc;
33

44
use torrust_tracker_configuration::TrackerPolicy;
5-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
65
use torrust_tracker_primitives::peer::{self};
76
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
8-
use torrust_tracker_primitives::DurationSinceUnixEpoch;
7+
use torrust_tracker_primitives::{AnnounceEvent, DurationSinceUnixEpoch};
98

109
use super::Entry;
1110
use crate::EntrySingle;

packages/torrent-repository/tests/common/torrent_peer_builder.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use std::net::SocketAddr;
22

33
use torrust_tracker_clock::clock::Time;
4-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
5-
use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch, NumberOfBytes};
4+
use torrust_tracker_primitives::{peer, AnnounceEvent, DurationSinceUnixEpoch, NumberOfBytes};
65

76
use crate::CurrentClock;
87

packages/torrent-repository/tests/entry/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ use rstest::{fixture, rstest};
66
use torrust_tracker_clock::clock::stopped::Stopped as _;
77
use torrust_tracker_clock::clock::{self, Time as _};
88
use torrust_tracker_configuration::{TrackerPolicy, TORRENT_PEERS_LIMIT};
9-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
109
use torrust_tracker_primitives::peer::Peer;
11-
use torrust_tracker_primitives::{peer, NumberOfBytes};
10+
use torrust_tracker_primitives::{peer, AnnounceEvent, NumberOfBytes};
1211
use torrust_tracker_torrent_repository::{
1312
EntryMutexParkingLot, EntryMutexStd, EntryMutexTokio, EntryRwLockParkingLot, EntrySingle,
1413
};

packages/torrent-repository/tests/repository/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ use std::hash::{DefaultHasher, Hash, Hasher};
33

44
use rstest::{fixture, rstest};
55
use torrust_tracker_configuration::TrackerPolicy;
6-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
76
use torrust_tracker_primitives::info_hash::InfoHash;
87
use torrust_tracker_primitives::pagination::Pagination;
98
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
10-
use torrust_tracker_primitives::{NumberOfBytes, PersistentTorrents};
9+
use torrust_tracker_primitives::{AnnounceEvent, NumberOfBytes, PersistentTorrents};
1110
use torrust_tracker_torrent_repository::entry::Entry as _;
1211
use torrust_tracker_torrent_repository::repository::dash_map_mutex_std::XacrimonDashMap;
1312
use torrust_tracker_torrent_repository::repository::rw_lock_std::RwLockStd;

src/core/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@
5555
//! Once you have instantiated the `Tracker` you can `announce` a new [`peer::Peer`] with:
5656
//!
5757
//! ```rust,no_run
58-
//! use torrust_tracker_primitives::peer;
59-
//! use torrust_tracker_primitives::info_hash::InfoHash;
60-
//! use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfBytes};
61-
//! use torrust_tracker_primitives::announce_event::AnnounceEvent;
6258
//! use std::net::SocketAddr;
6359
//! use std::net::IpAddr;
6460
//! use std::net::Ipv4Addr;
6561
//! use std::str::FromStr;
6662
//!
63+
//! use aquatic_udp_protocol::AnnounceEvent;
64+
//! use torrust_tracker_primitives::peer;
65+
//! use torrust_tracker_primitives::info_hash::InfoHash;
66+
//! use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfBytes};
6767
//!
6868
//! let info_hash = InfoHash::from_str("3b245504cf5f11bbdbe1201cea6a6bf45aee1bc0").unwrap();
6969
//!
@@ -1198,7 +1198,7 @@ mod tests {
11981198
use std::str::FromStr;
11991199
use std::sync::Arc;
12001200

1201-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
1201+
use aquatic_udp_protocol::AnnounceEvent;
12021202
use torrust_tracker_primitives::info_hash::InfoHash;
12031203
use torrust_tracker_primitives::{DurationSinceUnixEpoch, NumberOfBytes};
12041204
use torrust_tracker_test_helpers::configuration;
@@ -2035,7 +2035,7 @@ mod tests {
20352035

20362036
mod handling_torrent_persistence {
20372037

2038-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
2038+
use aquatic_udp_protocol::AnnounceEvent;
20392039
use torrust_tracker_torrent_repository::entry::EntrySync;
20402040
use torrust_tracker_torrent_repository::repository::Repository;
20412041

src/core/peer_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
44

5+
use aquatic_udp_protocol::AnnounceEvent;
56
use torrust_tracker_clock::clock::stopped::Stopped as _;
67
use torrust_tracker_clock::clock::{self, Time};
7-
use torrust_tracker_primitives::announce_event::AnnounceEvent;
88
use torrust_tracker_primitives::{peer, NumberOfBytes};
99

1010
use crate::CurrentClock;

0 commit comments

Comments
 (0)