From 46d76b80c6b1b3b1c549b770b1a5ba791b49da8a Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Sat, 31 Aug 2019 20:25:16 +0200 Subject: Reduce number of type parameters in router Merge multiple related type parameters into trait, allowing for easier refactoring and better maintainability. --- src/router/peer.rs | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'src/router/peer.rs') diff --git a/src/router/peer.rs b/src/router/peer.rs index 234c353..647d24f 100644 --- a/src/router/peer.rs +++ b/src/router/peer.rs @@ -12,7 +12,7 @@ use treebitmap::address::Address; use treebitmap::IpLookupTable; use super::super::constants::*; -use super::super::types::KeyPair; +use super::super::types::{KeyPair, Tun}; use super::anti_replay::AntiReplay; use super::device::DecryptionState; @@ -20,7 +20,7 @@ use super::device::DeviceInner; use super::device::EncryptionState; use super::workers::{worker_inbound, worker_outbound, JobInbound, JobOutbound}; -use super::types::{Callback, KeyCallback, Opaque}; +use super::types::Callbacks; const MAX_STAGED_PACKETS: usize = 128; @@ -31,14 +31,14 @@ pub struct KeyWheel { retired: Option, // retired id (previous id, after confirming key-pair) } -pub struct PeerInner, R: Callback, K: KeyCallback> { +pub struct PeerInner { pub stopped: AtomicBool, - pub opaque: T, - pub device: Arc>, + pub opaque: C::Opaque, + pub device: Arc>, pub thread_outbound: spin::Mutex>>, pub thread_inbound: spin::Mutex>>, pub queue_outbound: SyncSender, - pub queue_inbound: SyncSender>, + pub queue_inbound: SyncSender>, pub staged_packets: spin::Mutex; MAX_STAGED_PACKETS], Wrapping>>, // packets awaiting handshake pub rx_bytes: AtomicU64, // received bytes pub tx_bytes: AtomicU64, // transmitted bytes @@ -47,15 +47,15 @@ pub struct PeerInner, R: Callback, K: KeyCallback>>, } -pub struct Peer, R: Callback, K: KeyCallback>( - Arc>, +pub struct Peer( + Arc>, ); -fn treebit_list, R: Callback, K: KeyCallback>( - peer: &Arc>, - table: &spin::RwLock>>>, - callback: Box O>, -) -> Vec +fn treebit_list( + peer: &Arc>, + table: &spin::RwLock>>>, + callback: Box E>, +) -> Vec where A: Address, { @@ -71,9 +71,9 @@ where res } -fn treebit_remove, R: Callback, K: KeyCallback>( - peer: &Peer, - table: &spin::RwLock>>>, +fn treebit_remove( + peer: &Peer, + table: &spin::RwLock>>>, ) { let mut m = table.write(); @@ -95,7 +95,7 @@ fn treebit_remove, R: Callback, K: KeyC } } -impl, R: Callback, K: KeyCallback> Drop for Peer { +impl Drop for Peer { fn drop(&mut self) { // mark peer as stopped @@ -150,10 +150,10 @@ impl, R: Callback, K: KeyCallback> Drop for Peer } } -pub fn new_peer, R: Callback, K: KeyCallback>( - device: Arc>, - opaque: T, -) -> Peer { +pub fn new_peer( + device: Arc>, + opaque: C::Opaque, +) -> Peer { // allocate in-order queues let (send_inbound, recv_inbound) = sync_channel(MAX_STAGED_PACKETS); let (send_outbound, recv_outbound) = sync_channel(MAX_STAGED_PACKETS); @@ -204,7 +204,7 @@ pub fn new_peer, R: Callback, K: KeyCallback>( Peer(peer) } -impl, R: Callback, K: KeyCallback> PeerInner { +impl PeerInner { pub fn confirm_key(&self, kp: Weak) { // upgrade key-pair to strong reference @@ -214,8 +214,8 @@ impl, R: Callback, K: KeyCallback> PeerInner, R: Callback, K: KeyCallback> Peer { - fn new(inner: PeerInner) -> Peer { +impl Peer { + fn new(inner: PeerInner) -> Peer { Peer(Arc::new(inner)) } -- cgit v1.2.3-59-g8ed1b