rename various sender/receiver variables to be clearer

This commit is contained in:
Adrian Malacoda 2017-02-25 20:38:09 -06:00
parent 4d5a412395
commit 544974117f

View File

@ -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<Arc<Envelope>>> = self.modules.iter().map(|(key, module)| {
let module_sender = sender.clone();
let (sender, receiver) = mpsc::channel();
let module_senders: BTreeMap<&str, Sender<Arc<Envelope>>> = 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(_) => {}