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(); } } } }