From ead75828cdaa5253e57b5792b51e3d99a4a78ea0 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Sun, 16 Feb 2020 20:25:31 +0100 Subject: Simplified router code --- src/wireguard/router/worker.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/wireguard/router/worker.rs (limited to 'src/wireguard/router/worker.rs') diff --git a/src/wireguard/router/worker.rs b/src/wireguard/router/worker.rs new file mode 100644 index 0000000..bbb644c --- /dev/null +++ b/src/wireguard/router/worker.rs @@ -0,0 +1,31 @@ +use super::super::{tun, udp, Endpoint}; +use super::types::Callbacks; + +use super::queue::ParallelJob; +use super::receive::ReceiveJob; +use super::send::SendJob; + +use crossbeam_channel::Receiver; + +pub enum JobUnion> { + Outbound(SendJob), + Inbound(ReceiveJob), +} + +pub fn worker>( + receiver: Receiver>, +) { + loop { + match receiver.recv() { + Err(_) => break, + Ok(JobUnion::Inbound(job)) => { + job.parallel_work(); + job.queue().consume(); + } + Ok(JobUnion::Outbound(job)) => { + job.parallel_work(); + job.queue().consume(); + } + } + } +} -- cgit v1.2.3-59-g8ed1b