mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-01 10:15:31 +00:00
aquatic_udp: add and use ConnectedResponse enum
This commit is contained in:
parent
7616df9686
commit
de85feec9a
7 changed files with 47 additions and 21 deletions
|
|
@ -35,6 +35,20 @@ pub enum ConnectedRequest {
|
|||
Scrape(ScrapeRequest),
|
||||
}
|
||||
|
||||
pub enum ConnectedResponse {
|
||||
Announce(AnnounceResponse),
|
||||
Scrape(ScrapeResponse),
|
||||
}
|
||||
|
||||
impl Into<Response> for ConnectedResponse {
|
||||
fn into(self) -> Response {
|
||||
match self {
|
||||
Self::Announce(response) => Response::Announce(response),
|
||||
Self::Scrape(response) => Response::Scrape(response),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct ConnectionKey {
|
||||
pub connection_id: ConnectionId,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ pub fn handle_announce_requests(
|
|||
torrents: &mut MutexGuard<TorrentMaps>,
|
||||
rng: &mut SmallRng,
|
||||
requests: Drain<(AnnounceRequest, SocketAddr)>,
|
||||
responses: &mut Vec<(Response, SocketAddr)>,
|
||||
responses: &mut Vec<(ConnectedResponse, SocketAddr)>,
|
||||
) {
|
||||
let peer_valid_until = ValidUntil::new(config.cleaning.max_peer_age);
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ pub fn handle_announce_requests(
|
|||
),
|
||||
};
|
||||
|
||||
(Response::Announce(response), src)
|
||||
(ConnectedResponse::Announce(response), src)
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,12 +23,12 @@ pub fn run_request_worker(
|
|||
state: State,
|
||||
config: Config,
|
||||
request_receiver: Receiver<(ConnectedRequest, SocketAddr)>,
|
||||
response_sender: Sender<(Response, SocketAddr)>,
|
||||
response_sender: Sender<(ConnectedResponse, SocketAddr)>,
|
||||
) {
|
||||
let mut announce_requests: Vec<(AnnounceRequest, SocketAddr)> = Vec::new();
|
||||
let mut scrape_requests: Vec<(ScrapeRequest, SocketAddr)> = Vec::new();
|
||||
|
||||
let mut responses: Vec<(Response, SocketAddr)> = Vec::new();
|
||||
let mut responses: Vec<(ConnectedResponse, SocketAddr)> = Vec::new();
|
||||
|
||||
let mut std_rng = StdRng::from_entropy();
|
||||
let mut small_rng = SmallRng::from_rng(&mut std_rng).unwrap();
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ use crate::common::*;
|
|||
pub fn handle_scrape_requests(
|
||||
torrents: &mut MutexGuard<TorrentMaps>,
|
||||
requests: Drain<(ScrapeRequest, SocketAddr)>,
|
||||
responses: &mut Vec<(Response, SocketAddr)>,
|
||||
responses: &mut Vec<(ConnectedResponse, SocketAddr)>,
|
||||
) {
|
||||
let empty_stats = create_torrent_scrape_statistics(0, 0);
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ pub fn handle_scrape_requests(
|
|||
}
|
||||
}
|
||||
|
||||
let response = Response::Scrape(ScrapeResponse {
|
||||
let response = ConnectedResponse::Scrape(ScrapeResponse {
|
||||
transaction_id: request.transaction_id,
|
||||
torrent_stats: stats,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ pub fn run_socket_worker(
|
|||
config: Config,
|
||||
token_num: usize,
|
||||
request_sender: Sender<(ConnectedRequest, SocketAddr)>,
|
||||
response_receiver: Receiver<(Response, SocketAddr)>,
|
||||
response_receiver: Receiver<(ConnectedResponse, SocketAddr)>,
|
||||
num_bound_sockets: Arc<AtomicUsize>,
|
||||
) {
|
||||
let mut rng = StdRng::from_entropy();
|
||||
|
|
@ -249,7 +249,7 @@ fn send_responses(
|
|||
config: &Config,
|
||||
socket: &mut UdpSocket,
|
||||
buffer: &mut [u8],
|
||||
response_receiver: &Receiver<(Response, SocketAddr)>,
|
||||
response_receiver: &Receiver<(ConnectedResponse, SocketAddr)>,
|
||||
local_responses: Drain<(Response, SocketAddr)>,
|
||||
) {
|
||||
let mut responses_sent: usize = 0;
|
||||
|
|
@ -257,9 +257,11 @@ fn send_responses(
|
|||
|
||||
let mut cursor = Cursor::new(buffer);
|
||||
|
||||
let response_iterator = local_responses
|
||||
.into_iter()
|
||||
.chain(response_receiver.try_iter());
|
||||
let response_iterator = local_responses.into_iter().chain(
|
||||
response_receiver
|
||||
.try_iter()
|
||||
.map(|(response, addr)| (response.into(), addr)),
|
||||
);
|
||||
|
||||
for (response, src) in response_iterator {
|
||||
cursor.set_position(0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue