aboutsummaryrefslogtreecommitdiffstats
path: root/src/router/outbound.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/router/outbound.rs')
-rw-r--r--src/router/outbound.rs32
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