Skip to content

Commit eca5c59

Browse files
committedFeb 14, 2025··
refactor: [#1268] move scrape logic from udp server to udp_tracker_core package
1 parent c0fc390 commit eca5c59

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed
 

‎src/packages/udp_tracker_core/services/scrape.rs

+17
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,29 @@
1010
use std::net::SocketAddr;
1111
use std::sync::Arc;
1212

13+
use aquatic_udp_protocol::ScrapeRequest;
1314
use bittorrent_primitives::info_hash::InfoHash;
1415
use bittorrent_tracker_core::scrape_handler::ScrapeHandler;
1516
use torrust_tracker_primitives::core::ScrapeData;
1617

1718
use crate::packages::udp_tracker_core;
1819

20+
/// It handles the `Scrape` request.
21+
pub async fn handle_scrape(
22+
remote_addr: SocketAddr,
23+
request: &ScrapeRequest,
24+
scrape_handler: &Arc<ScrapeHandler>,
25+
opt_udp_stats_event_sender: &Arc<Option<Box<dyn udp_tracker_core::statistics::event::sender::Sender>>>,
26+
) -> ScrapeData {
27+
// Convert from aquatic infohashes
28+
let mut info_hashes: Vec<InfoHash> = vec![];
29+
for info_hash in &request.info_hashes {
30+
info_hashes.push((*info_hash).into());
31+
}
32+
33+
invoke(scrape_handler, opt_udp_stats_event_sender, &info_hashes, remote_addr).await
34+
}
35+
1936
pub async fn invoke(
2037
scrape_handler: &Arc<ScrapeHandler>,
2138
opt_udp_stats_event_sender: &Arc<Option<Box<dyn udp_tracker_core::statistics::event::sender::Sender>>>,

‎src/servers/udp/handlers/scrape.rs

+5-8
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ use std::sync::Arc;
66
use aquatic_udp_protocol::{
77
NumberOfDownloads, NumberOfPeers, Response, ScrapeRequest, ScrapeResponse, TorrentScrapeStatistics, TransactionId,
88
};
9-
use bittorrent_primitives::info_hash::InfoHash;
109
use bittorrent_tracker_core::scrape_handler::ScrapeHandler;
1110
use tracing::{instrument, Level};
1211
use zerocopy::network_endian::I32;
1312

1413
use crate::packages::udp_tracker_core;
15-
use crate::packages::udp_tracker_core::services;
1614
use crate::servers::udp::connection_cookie::check;
1715
use crate::servers::udp::error::Error;
1816
use crate::servers::udp::handlers::gen_remote_fingerprint;
@@ -37,20 +35,19 @@ pub async fn handle_scrape(
3735

3836
tracing::trace!("handle scrape");
3937

38+
// todo: move authentication to `udp_tracker_core::services::scrape::handle_scrape`
39+
4040
check(
4141
&request.connection_id,
4242
gen_remote_fingerprint(&remote_addr),
4343
cookie_valid_range,
4444
)
4545
.map_err(|e| (e, request.transaction_id))?;
4646

47-
// Convert from aquatic infohashes
48-
let mut info_hashes: Vec<InfoHash> = vec![];
49-
for info_hash in &request.info_hashes {
50-
info_hashes.push((*info_hash).into());
51-
}
47+
let scrape_data =
48+
udp_tracker_core::services::scrape::handle_scrape(remote_addr, request, scrape_handler, opt_udp_stats_event_sender).await;
5249

53-
let scrape_data = services::scrape::invoke(scrape_handler, opt_udp_stats_event_sender, &info_hashes, remote_addr).await;
50+
// todo: extract `build_response` function.
5451

5552
let mut torrent_stats: Vec<TorrentScrapeStatistics> = Vec::new();
5653

0 commit comments

Comments
 (0)
Please sign in to comment.