aquatic: run_event_loop: extract inner logic to own function

This commit is contained in:
Joakim Frostegård 2020-04-06 19:55:30 +02:00
parent 8426e8f3f7
commit ad1fa5b833

View file

@ -81,8 +81,38 @@ pub fn run_event_loop(
if token.0 == token_num {
if event.is_readable(){
handle_readable_socket(
&state,
&mut socket,
&mut buffer,
&mut responses,
&mut connect_requests,
&mut announce_requests,
&mut scrape_requests
);
poll.registry()
.reregister(&mut socket, token, interests)
.unwrap();
}
}
}
}
}
/// Read requests, generate and send back responses
fn handle_readable_socket(
state: &State,
socket: &mut UdpSocket,
buffer: &mut [u8],
responses: &mut Vec<(Response, SocketAddr)>,
connect_requests: &mut Vec<(ConnectRequest, SocketAddr)>,
announce_requests: &mut Vec<(AnnounceRequest, SocketAddr)>,
scrape_requests: &mut Vec<(ScrapeRequest, SocketAddr)>,
){
loop {
match socket.recv_from(&mut buffer) {
match socket.recv_from(buffer) {
Ok((amt, src)) => {
let request = request_from_bytes(
&buffer[..amt],
@ -108,7 +138,7 @@ pub fn run_event_loop(
responses.push((response, src));
},
Err(err) => {
eprintln!("Request parse error: {:?}", err);
eprintln!("request_from_bytes error: {:?}", err);
},
}
},
@ -126,18 +156,18 @@ pub fn run_event_loop(
}
handle_connect_requests(
&state,
&mut responses,
state,
responses,
connect_requests.drain(..)
);
handle_announce_requests(
&state,
&mut responses,
state,
responses,
announce_requests.drain(..),
);
handle_scrape_requests(
&state,
&mut responses,
state,
responses,
scrape_requests.drain(..),
);
@ -159,10 +189,4 @@ pub fn run_event_loop(
}
}
}
poll.registry().reregister(&mut socket, token, interests).unwrap();
}
}
}
}
}