mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
aquatic: handlers: pass rng's as function arguments
This commit is contained in:
parent
bd16cdd709
commit
2fd732efc6
5 changed files with 25 additions and 11 deletions
|
|
@ -3,7 +3,7 @@ use std::sync::atomic::Ordering;
|
|||
use std::time::Instant;
|
||||
use std::vec::Drain;
|
||||
|
||||
use rand::{Rng, SeedableRng, rngs::SmallRng, thread_rng};
|
||||
use rand::{Rng, rngs::{SmallRng, StdRng}};
|
||||
|
||||
use bittorrent_udp::types::*;
|
||||
|
||||
|
|
@ -13,11 +13,11 @@ use crate::config::Config;
|
|||
|
||||
pub fn handle_connect_requests(
|
||||
state: &State,
|
||||
rng: &mut StdRng,
|
||||
responses: &mut Vec<(Response, SocketAddr)>,
|
||||
requests: Drain<(ConnectRequest, SocketAddr)>,
|
||||
){
|
||||
let now = Time(Instant::now());
|
||||
let mut rng = thread_rng();
|
||||
|
||||
responses.extend(requests.map(|(request, src)| {
|
||||
let connection_id = ConnectionId(rng.gen());
|
||||
|
|
@ -44,11 +44,10 @@ pub fn handle_connect_requests(
|
|||
pub fn handle_announce_requests(
|
||||
state: &State,
|
||||
config: &Config,
|
||||
rng: &mut SmallRng,
|
||||
responses: &mut Vec<(Response, SocketAddr)>,
|
||||
requests: Drain<(AnnounceRequest, SocketAddr)>,
|
||||
){
|
||||
let mut rng = SmallRng::from_rng(thread_rng()).unwrap();
|
||||
|
||||
responses.extend(requests.filter_map(|(request, src)| {
|
||||
let connection_key = ConnectionKey {
|
||||
connection_id: request.connection_id,
|
||||
|
|
@ -108,7 +107,7 @@ pub fn handle_announce_requests(
|
|||
}
|
||||
|
||||
let response_peers = extract_response_peers(
|
||||
&mut rng,
|
||||
rng,
|
||||
&torrent_data.peers,
|
||||
max_num_peers_to_take,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ use mio::{Events, Poll, Interest, Token};
|
|||
use mio::net::UdpSocket;
|
||||
use net2::{UdpSocketExt, UdpBuilder};
|
||||
use net2::unix::UnixUdpBuilderExt;
|
||||
use rand::{SeedableRng, rngs::{SmallRng, StdRng}};
|
||||
|
||||
use bittorrent_udp::types::IpVersion;
|
||||
use bittorrent_udp::converters::{response_to_bytes, request_from_bytes};
|
||||
|
|
@ -38,6 +39,9 @@ pub fn run_event_loop(
|
|||
let mut scrape_requests: Vec<(ScrapeRequest, SocketAddr)> = Vec::new();
|
||||
let mut responses: Vec<(Response, SocketAddr)> = Vec::new();
|
||||
|
||||
let mut std_rng = StdRng::from_entropy();
|
||||
let mut small_rng = SmallRng::from_rng(&mut std_rng).unwrap();
|
||||
|
||||
loop {
|
||||
poll.poll(&mut events, None)
|
||||
.expect("failed polling");
|
||||
|
|
@ -51,6 +55,8 @@ pub fn run_event_loop(
|
|||
&state,
|
||||
&config,
|
||||
&mut socket,
|
||||
&mut std_rng,
|
||||
&mut small_rng,
|
||||
&mut buffer,
|
||||
&mut responses,
|
||||
&mut connect_requests,
|
||||
|
|
@ -107,6 +113,8 @@ fn handle_readable_socket(
|
|||
state: &State,
|
||||
config: &Config,
|
||||
socket: &mut UdpSocket,
|
||||
std_rng: &mut StdRng,
|
||||
small_rng: &mut SmallRng,
|
||||
buffer: &mut [u8],
|
||||
responses: &mut Vec<(Response, SocketAddr)>,
|
||||
connect_requests: &mut Vec<(ConnectRequest, SocketAddr)>,
|
||||
|
|
@ -167,12 +175,14 @@ fn handle_readable_socket(
|
|||
|
||||
handle_connect_requests(
|
||||
state,
|
||||
std_rng,
|
||||
responses,
|
||||
connect_requests.drain(..)
|
||||
);
|
||||
handle_announce_requests(
|
||||
state,
|
||||
config,
|
||||
small_rng,
|
||||
responses,
|
||||
announce_requests.drain(..),
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue