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; use log; pub enum JobUnion> { Outbound(SendJob), Inbound(ReceiveJob), } pub fn worker>( receiver: Receiver>, ) { loop { log::trace!("pool worker awaiting job"); match receiver.recv() { Err(e) => { log::debug!("worker stopped with {}", e); break; } Ok(JobUnion::Inbound(job)) => { job.parallel_work(); job.queue().consume(); } Ok(JobUnion::Outbound(job)) => { job.parallel_work(); job.queue().consume(); } } } }