Skip to content

Commit 94673d6

Browse files
committed
refactor: [#1203] inline methods in core tracker
For the InMemoryTorrentRepository.
1 parent a4277a7 commit 94673d6

File tree

4 files changed

+29
-57
lines changed

4 files changed

+29
-57
lines changed

src/core/mod.rs

+18-46
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,6 @@ use torrust_tracker_configuration::{AnnouncePolicy, Core, TORRENT_PEERS_LIMIT};
459459
use torrust_tracker_primitives::core::{AnnounceData, ScrapeData};
460460
use torrust_tracker_primitives::peer;
461461
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
462-
use torrust_tracker_primitives::torrent_metrics::TorrentsMetrics;
463462

464463
/// The domain layer tracker service.
465464
///
@@ -478,7 +477,7 @@ pub struct Tracker {
478477
pub whitelist_authorization: Arc<whitelist::authorization::Authorization>,
479478

480479
/// The in-memory torrents repository.
481-
in_memory_torrent_repository: Arc<InMemoryTorrentRepository>,
480+
pub in_memory_torrent_repository: Arc<InMemoryTorrentRepository>,
482481

483482
/// The persistent torrents repository.
484483
db_torrent_repository: Arc<DatabasePersistentTorrentRepository>,
@@ -619,7 +618,9 @@ impl Tracker {
619618

620619
let stats = self.upsert_peer_and_get_stats(info_hash, peer);
621620

622-
let peers = self.get_peers_for(info_hash, peer, peers_wanted.limit());
621+
let peers = self
622+
.in_memory_torrent_repository
623+
.get_peers_for(info_hash, peer, peers_wanted.limit());
623624

624625
AnnounceData {
625626
peers,
@@ -638,7 +639,7 @@ impl Tracker {
638639

639640
for info_hash in info_hashes {
640641
let swarm_metadata = match self.whitelist_authorization.authorize(info_hash).await {
641-
Ok(()) => self.get_swarm_metadata(info_hash),
642+
Ok(()) => self.in_memory_torrent_repository.get_swarm_metadata(info_hash),
642643
Err(_) => SwarmMetadata::zeroed(),
643644
};
644645
scrape_data.add_file(info_hash, swarm_metadata);
@@ -684,40 +685,6 @@ impl Tracker {
684685
drop(self.db_torrent_repository.save(&info_hash, completed));
685686
}
686687
}
687-
688-
/// It returns the data for a `scrape` response.
689-
fn get_swarm_metadata(&self, info_hash: &InfoHash) -> SwarmMetadata {
690-
self.in_memory_torrent_repository.get_swarm_metadata(info_hash)
691-
}
692-
693-
/// # Context: Tracker
694-
///
695-
/// Get torrent peers for a given torrent and client.
696-
///
697-
/// It filters out the client making the request.
698-
fn get_peers_for(&self, info_hash: &InfoHash, peer: &peer::Peer, limit: usize) -> Vec<Arc<peer::Peer>> {
699-
self.in_memory_torrent_repository.get_peers_for(info_hash, peer, limit)
700-
}
701-
702-
/// # Context: Tracker
703-
///
704-
/// Get torrent peers for a given torrent.
705-
#[must_use]
706-
pub fn get_torrent_peers(&self, info_hash: &InfoHash) -> Vec<Arc<peer::Peer>> {
707-
self.in_memory_torrent_repository.get_torrent_peers(info_hash)
708-
}
709-
710-
/// It calculates and returns the general `Tracker`
711-
/// [`TorrentsMetrics`]
712-
///
713-
/// # Context: Tracker
714-
///
715-
/// # Panics
716-
/// Panics if unable to get the torrent metrics.
717-
#[must_use]
718-
pub fn get_torrents_metrics(&self) -> TorrentsMetrics {
719-
self.in_memory_torrent_repository.get_torrents_metrics()
720-
}
721688
}
722689

723690
#[must_use]
@@ -742,6 +709,7 @@ mod tests {
742709
use bittorrent_primitives::info_hash::fixture::gen_seeded_infohash;
743710
use bittorrent_primitives::info_hash::InfoHash;
744711
use torrust_tracker_configuration::TORRENT_PEERS_LIMIT;
712+
use torrust_tracker_primitives::torrent_metrics::TorrentsMetrics;
745713
use torrust_tracker_primitives::DurationSinceUnixEpoch;
746714
use torrust_tracker_test_helpers::configuration;
747715

@@ -750,7 +718,7 @@ mod tests {
750718
use crate::core::services::{initialize_tracker, initialize_whitelist_manager};
751719
use crate::core::torrent::manager::TorrentsManager;
752720
use crate::core::whitelist::manager::WhiteListManager;
753-
use crate::core::{whitelist, TorrentsMetrics, Tracker};
721+
use crate::core::{whitelist, Tracker};
754722

755723
fn public_tracker() -> Tracker {
756724
let config = configuration::ephemeral_public();
@@ -910,7 +878,7 @@ mod tests {
910878
async fn should_collect_torrent_metrics() {
911879
let tracker = public_tracker();
912880

913-
let torrents_metrics = tracker.get_torrents_metrics();
881+
let torrents_metrics = tracker.in_memory_torrent_repository.get_torrents_metrics();
914882

915883
assert_eq!(
916884
torrents_metrics,
@@ -932,7 +900,7 @@ mod tests {
932900

933901
let _ = tracker.upsert_peer_and_get_stats(&info_hash, &peer);
934902

935-
let peers = tracker.get_torrent_peers(&info_hash);
903+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash);
936904

937905
assert_eq!(peers, vec![Arc::new(peer)]);
938906
}
@@ -975,7 +943,7 @@ mod tests {
975943
let _ = tracker.upsert_peer_and_get_stats(&info_hash, &peer);
976944
}
977945

978-
let peers = tracker.get_torrent_peers(&info_hash);
946+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash);
979947

980948
assert_eq!(peers.len(), 74);
981949
}
@@ -989,7 +957,9 @@ mod tests {
989957

990958
let _ = tracker.upsert_peer_and_get_stats(&info_hash, &peer);
991959

992-
let peers = tracker.get_peers_for(&info_hash, &peer, TORRENT_PEERS_LIMIT);
960+
let peers = tracker
961+
.in_memory_torrent_repository
962+
.get_peers_for(&info_hash, &peer, TORRENT_PEERS_LIMIT);
993963

994964
assert_eq!(peers, vec![]);
995965
}
@@ -1019,7 +989,9 @@ mod tests {
1019989
let _ = tracker.upsert_peer_and_get_stats(&info_hash, &peer);
1020990
}
1021991

1022-
let peers = tracker.get_peers_for(&info_hash, &excluded_peer, TORRENT_PEERS_LIMIT);
992+
let peers = tracker
993+
.in_memory_torrent_repository
994+
.get_peers_for(&info_hash, &excluded_peer, TORRENT_PEERS_LIMIT);
1023995

1024996
assert_eq!(peers.len(), 74);
1025997
}
@@ -1030,7 +1002,7 @@ mod tests {
10301002

10311003
let _ = tracker.upsert_peer_and_get_stats(&sample_info_hash(), &leecher());
10321004

1033-
let torrent_metrics = tracker.get_torrents_metrics();
1005+
let torrent_metrics = tracker.in_memory_torrent_repository.get_torrents_metrics();
10341006

10351007
assert_eq!(
10361008
torrent_metrics,
@@ -1054,7 +1026,7 @@ mod tests {
10541026
let result_a = start_time.elapsed();
10551027

10561028
let start_time = std::time::Instant::now();
1057-
let torrent_metrics = tracker.get_torrents_metrics();
1029+
let torrent_metrics = tracker.in_memory_torrent_repository.get_torrents_metrics();
10581030
let result_b = start_time.elapsed();
10591031

10601032
assert_eq!(

src/core/services/statistics/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ pub async fn get_metrics(
6868
ban_service: Arc<RwLock<BanService>>,
6969
stats_repository: Arc<Repository>,
7070
) -> TrackerMetrics {
71-
let torrents_metrics = tracker.get_torrents_metrics();
71+
let torrents_metrics = tracker.in_memory_torrent_repository.get_torrents_metrics();
7272
let stats = stats_repository.get_stats().await;
7373
let udp_banned_ips_total = ban_service.read().await.get_banned_ips_total();
7474

src/servers/udp/handlers.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ mod tests {
916916
.await
917917
.unwrap();
918918

919-
let peers = tracker.get_torrent_peers(&info_hash.0.into());
919+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash.0.into());
920920

921921
let expected_peer = TorrentPeerBuilder::new()
922922
.with_peer_id(peer_id)
@@ -1001,7 +1001,7 @@ mod tests {
10011001
.await
10021002
.unwrap();
10031003

1004-
let peers = tracker.get_torrent_peers(&info_hash.0.into());
1004+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash.0.into());
10051005

10061006
assert_eq!(peers[0].peer_addr, SocketAddr::new(IpAddr::V4(remote_client_ip), client_port));
10071007
}
@@ -1133,7 +1133,7 @@ mod tests {
11331133
.await
11341134
.unwrap();
11351135

1136-
let peers = tracker.get_torrent_peers(&info_hash.0.into());
1136+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash.0.into());
11371137

11381138
let external_ip_in_tracker_configuration = tracker.get_maybe_external_ip().unwrap();
11391139

@@ -1200,7 +1200,7 @@ mod tests {
12001200
.await
12011201
.unwrap();
12021202

1203-
let peers = tracker.get_torrent_peers(&info_hash.0.into());
1203+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash.0.into());
12041204

12051205
let expected_peer = TorrentPeerBuilder::new()
12061206
.with_peer_id(peer_id)
@@ -1288,7 +1288,7 @@ mod tests {
12881288
.await
12891289
.unwrap();
12901290

1291-
let peers = tracker.get_torrent_peers(&info_hash.0.into());
1291+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash.0.into());
12921292

12931293
// When using IPv6 the tracker converts the remote client ip into a IPv4 address
12941294
assert_eq!(peers[0].peer_addr, SocketAddr::new(IpAddr::V6(remote_client_ip), client_port));
@@ -1466,7 +1466,7 @@ mod tests {
14661466
.await
14671467
.unwrap();
14681468

1469-
let peers = tracker.get_torrent_peers(&info_hash.0.into());
1469+
let peers = tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash.0.into());
14701470

14711471
let external_ip_in_tracker_configuration = tracker.get_maybe_external_ip().unwrap();
14721472

tests/servers/http/v1/contract.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -831,7 +831,7 @@ mod for_all_config_modes {
831831
assert_eq!(status, StatusCode::OK);
832832
}
833833

834-
let peers = env.tracker.get_torrent_peers(&info_hash);
834+
let peers = env.tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash);
835835
let peer_addr = peers[0].peer_addr;
836836

837837
assert_eq!(peer_addr.ip(), client_ip);
@@ -869,7 +869,7 @@ mod for_all_config_modes {
869869
assert_eq!(status, StatusCode::OK);
870870
}
871871

872-
let peers = env.tracker.get_torrent_peers(&info_hash);
872+
let peers = env.tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash);
873873
let peer_addr = peers[0].peer_addr;
874874

875875
assert_eq!(peer_addr.ip(), env.tracker.get_maybe_external_ip().unwrap());
@@ -911,7 +911,7 @@ mod for_all_config_modes {
911911
assert_eq!(status, StatusCode::OK);
912912
}
913913

914-
let peers = env.tracker.get_torrent_peers(&info_hash);
914+
let peers = env.tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash);
915915
let peer_addr = peers[0].peer_addr;
916916

917917
assert_eq!(peer_addr.ip(), env.tracker.get_maybe_external_ip().unwrap());
@@ -951,7 +951,7 @@ mod for_all_config_modes {
951951
assert_eq!(status, StatusCode::OK);
952952
}
953953

954-
let peers = env.tracker.get_torrent_peers(&info_hash);
954+
let peers = env.tracker.in_memory_torrent_repository.get_torrent_peers(&info_hash);
955955
let peer_addr = peers[0].peer_addr;
956956

957957
assert_eq!(peer_addr.ip(), IpAddr::from_str("150.172.238.178").unwrap());

0 commit comments

Comments
 (0)