Skip to content

Commit 9015668

Browse files
committed
refactor: [torrust#746] rename functions and extract named closures
1 parent cc1cbc1 commit 9015668

File tree

1 file changed

+36
-31
lines changed

1 file changed

+36
-31
lines changed

src/servers/udp/server.rs

+36-31
Original file line numberDiff line numberDiff line change
@@ -255,24 +255,7 @@ impl Udp {
255255

256256
let running = tokio::task::spawn(async move {
257257
debug!(target: "UDP TRACKER", "Started: Waiting for packets on socket address: udp://{address} ...");
258-
259-
let tracker = tracker.clone();
260-
let socket = socket.clone();
261-
262-
let reqs = &mut ActiveRequests::default();
263-
264-
// Main Waiting Loop, awaits on async [`receive_request`].
265-
loop {
266-
if let Some(h) = reqs.rb.push_overwrite(
267-
Self::do_request(Self::receive_request(socket.clone()).await, tracker.clone(), socket.clone()).abort_handle(),
268-
) {
269-
if !h.is_finished() {
270-
// the task is still running, lets yield and give it a chance to flush.
271-
tokio::task::yield_now().await;
272-
h.abort();
273-
}
274-
}
275-
}
258+
Self::run_udp_server(tracker, socket).await;
276259
});
277260

278261
tx_start
@@ -292,6 +275,27 @@ impl Udp {
292275
task::yield_now().await; // lets allow the other threads to complete.
293276
}
294277

278+
async fn run_udp_server(tracker: Arc<Tracker>, socket: Arc<UdpSocket>) {
279+
let tracker = tracker.clone();
280+
let socket = socket.clone();
281+
282+
let reqs = &mut ActiveRequests::default();
283+
284+
// Main Waiting Loop, awaits on async [`receive_request`].
285+
loop {
286+
if let Some(h) = reqs.rb.push_overwrite(
287+
Self::spawn_request_processor(Self::receive_request(socket.clone()).await, tracker.clone(), socket.clone())
288+
.abort_handle(),
289+
) {
290+
if !h.is_finished() {
291+
// the task is still running, lets yield and give it a chance to flush.
292+
tokio::task::yield_now().await;
293+
h.abort();
294+
}
295+
}
296+
}
297+
}
298+
295299
async fn receive_request(socket: Arc<UdpSocket>) -> Result<UdpRequest, Box<std::io::Error>> {
296300
// Wait for the socket to be readable
297301
socket.readable().await?;
@@ -309,26 +313,27 @@ impl Udp {
309313
}
310314
}
311315

312-
fn do_request(
316+
fn spawn_request_processor(
313317
result: Result<UdpRequest, Box<std::io::Error>>,
314318
tracker: Arc<Tracker>,
315319
socket: Arc<UdpSocket>,
316320
) -> JoinHandle<()> {
317-
// timeout not needed, as udp is non-blocking.
318-
tokio::task::spawn(async move {
319-
match result {
320-
Ok(udp_request) => {
321-
trace!("Received Request from: {}", udp_request.from);
322-
Self::make_response(tracker.clone(), socket.clone(), udp_request).await;
323-
}
324-
Err(error) => {
325-
debug!("error: {error}");
326-
}
321+
tokio::task::spawn(Self::process_request(result, tracker, socket))
322+
}
323+
324+
async fn process_request(result: Result<UdpRequest, Box<std::io::Error>>, tracker: Arc<Tracker>, socket: Arc<UdpSocket>) {
325+
match result {
326+
Ok(udp_request) => {
327+
trace!("Received Request from: {}", udp_request.from);
328+
Self::process_valid_request(tracker.clone(), socket.clone(), udp_request).await;
327329
}
328-
})
330+
Err(error) => {
331+
debug!("error: {error}");
332+
}
333+
}
329334
}
330335

331-
async fn make_response(tracker: Arc<Tracker>, socket: Arc<UdpSocket>, udp_request: UdpRequest) {
336+
async fn process_valid_request(tracker: Arc<Tracker>, socket: Arc<UdpSocket>, udp_request: UdpRequest) {
332337
trace!("Making Response to {udp_request:?}");
333338
let from = udp_request.from;
334339
let response = handlers::handle_packet(udp_request, &tracker.clone(), socket.clone()).await;

0 commit comments

Comments
 (0)