diff --git a/aquatic_http/src/lib/common.rs b/aquatic_http/src/lib/common.rs
index c0f2549..ae1037c 100644
--- a/aquatic_http/src/lib/common.rs
+++ b/aquatic_http/src/lib/common.rs
@@ -16,6 +16,12 @@ use crate::protocol::request::Request;
use crate::protocol::response::{Response, ResponsePeer};
+pub trait Ip: Copy + Eq + ::std::hash::Hash {}
+
+impl Ip for Ipv4Addr {}
+impl Ip for Ipv6Addr {}
+
+
#[derive(Clone, Copy, Debug)]
pub struct ConnectionMeta {
/// Index of socket worker responsible for this connection. Required for
@@ -27,10 +33,10 @@ pub struct ConnectionMeta {
#[derive(Clone, Copy, Debug)]
-pub struct PeerConnectionMeta
{
+pub struct PeerConnectionMeta {
pub worker_index: usize,
pub poll_token: Token,
- pub peer_ip_address: P,
+ pub peer_ip_address: I,
}
@@ -63,16 +69,16 @@ impl PeerStatus {
#[derive(Clone, Copy)]
-pub struct Peer {
- pub connection_meta: PeerConnectionMeta
,
+pub struct Peer {
+ pub connection_meta: PeerConnectionMeta,
pub port: u16,
pub status: PeerStatus,
pub valid_until: ValidUntil,
}
-impl Peer {
- pub fn to_response_peer(&self) -> ResponsePeer {
+impl Peer {
+ pub fn to_response_peer(&self) -> ResponsePeer {
ResponsePeer {
ip_address: self.connection_meta.peer_ip_address,
port: self.port
@@ -82,23 +88,23 @@ impl Peer {
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct PeerMapKey {
+pub struct PeerMapKey {
pub peer_id: PeerId,
- pub ip_or_key: Either
+ pub ip_or_key: Either
}
-pub type PeerMap
= IndexMap, Peer>;
+pub type PeerMap = IndexMap, Peer>;
-pub struct TorrentData {
- pub peers: PeerMap,
+pub struct TorrentData {
+ pub peers: PeerMap,
pub num_seeders: usize,
pub num_leechers: usize,
}
-impl Default for TorrentData {
+impl Default for TorrentData {
#[inline]
fn default() -> Self {
Self {
@@ -110,7 +116,7 @@ impl Default for TorrentData {
}
-pub type TorrentMap
= HashMap>;
+pub type TorrentMap = HashMap>;
#[derive(Default)]
diff --git a/aquatic_http/src/lib/handler.rs b/aquatic_http/src/lib/handler.rs
index caff517..be18a72 100644
--- a/aquatic_http/src/lib/handler.rs
+++ b/aquatic_http/src/lib/handler.rs
@@ -170,14 +170,14 @@ pub fn handle_announce_requests(
/// Insert/update peer. Return num_seeders, num_leechers and response peers
-fn upsert_peer_and_get_response_peers(
+fn upsert_peer_and_get_response_peers(
config: &Config,
rng: &mut impl Rng,
- request_sender_meta: PeerConnectionMeta,
- torrent_data: &mut TorrentData
,
+ request_sender_meta: PeerConnectionMeta,
+ torrent_data: &mut TorrentData,
request: AnnounceRequest,
valid_until: ValidUntil,
-) -> (usize, usize, Vec>) {
+) -> (usize, usize, Vec>) {
// Insert/update/remove peer who sent this request
{
let peer_status = PeerStatus::from_event_and_bytes_left(
@@ -235,7 +235,7 @@ fn upsert_peer_and_get_response_peers(
Some(numwant) => numwant.min(config.protocol.max_peers),
};
- let response_peers: Vec> = extract_response_peers(
+ let response_peers: Vec> = extract_response_peers(
rng,
&torrent_data.peers,
max_num_peers_to_take,
diff --git a/aquatic_http/src/lib/tasks.rs b/aquatic_http/src/lib/tasks.rs
index ad901dc..6c04be6 100644
--- a/aquatic_http/src/lib/tasks.rs
+++ b/aquatic_http/src/lib/tasks.rs
@@ -12,7 +12,7 @@ pub fn clean_torrents(state: &State){
}
-fn clean_torrent_map(
+fn clean_torrent_map(
torrent_map: &mut TorrentMap,
){
let now = Instant::now();