diff options
Diffstat (limited to 'src/router/outbound.rs')
-rw-r--r-- | src/router/outbound.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/router/outbound.rs b/src/router/outbound.rs new file mode 100644 index 0000000..cc6a4bf --- /dev/null +++ b/src/router/outbound.rs @@ -0,0 +1,32 @@ +use spin; +use std::thread; +use std::sync::Arc; +use std::sync::mpsc::{Receiver, sync_channel}; + +struct JobInner { + done : bool, // is encryption complete? + msg : Vec<u8>, // transport message (id, nonce already set) + key : [u8; 32], // encryption key + handle : thread::JoinHandle +} + +type Job = Arc<spin::Mutex<JobInner>>; + +fn worker_parallel() + +fn worker_inorder(channel : Receiver<Job>) { + for ordered in channel.recv().iter() { + loop { + // check if job is complete + match ordered.try_lock() { + None => (), + Some(guard) => if guard.done { + // write to UDP interface + } + } + + // wait for job to complete + thread::park(); + } + } +}
\ No newline at end of file |