diff --git a/src/lib.rs b/src/lib.rs index e1f5ae1..ae2b157 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -49,34 +49,34 @@ impl Tenquestionmarks { pub fn run (&self) { crossbeam::scope(|scope| { - // Our event channel. + // Our main event channel. // Modules push events to tenquestionmarks using this channel. - let (ref sender, ref receiver) = mpsc::channel(); + let (ref main_sender, ref main_receiver) = mpsc::channel(); // Module threads. // Each Module will produce events which tenquestionmarks will push // into all other Modules. // tenquestionmarks propagates all events to each Module through these // channels. - let senders: BTreeMap<&str, Sender>> = self.modules.iter().map(|(key, module)| { - let module_sender = sender.clone(); - let (sender, receiver) = mpsc::channel(); + let module_senders: BTreeMap<&str, Sender>> = self.modules.iter().map(|(key, module)| { + let main_sender_clone = main_sender.clone(); + let (module_sender, module_receiver) = mpsc::channel(); info!("Spawning thread for \"{}\"", key); scope.spawn(move || { - module.run(module_sender, receiver); + module.run(main_sender_clone, module_receiver); info!("Thread for \"{}\" is exiting", key); }); - (&key[..], sender) + (&key[..], module_sender) }).collect(); // tenquestionmarks main event loop. // tenquestionmarks receives events produced by Modules and pushes them // into all other Modules loop { - match receiver.recv() { + match main_receiver.recv() { Ok(envelope) => { let arc_envelope = Arc::new(envelope); - for (key, sender) in &senders { + for (key, sender) in &module_senders { match sender.send(arc_envelope.clone()) { Err(err) => debug!("Failed to dispatch event to module \"{}\": {:?}", key, err), Ok(_) => {}