add "Logger" module which logs all received events

This commit is contained in:
Adrian Malacoda 2017-05-09 23:39:21 -05:00
parent 2baffdacd3
commit 6dda3e227f
2 changed files with 36 additions and 0 deletions

View File

@ -13,6 +13,7 @@ use modules::random::RandomModule;
use modules::pvn::PvnModule; use modules::pvn::PvnModule;
use modules::echobox::EchoboxModule; use modules::echobox::EchoboxModule;
use modules::autolink::AutolinkModule; use modules::autolink::AutolinkModule;
use modules::logger::LoggerModule;
pub struct ModuleLoader { pub struct ModuleLoader {
types: BTreeMap<&'static str, fn(&Table, &Table) -> Module> types: BTreeMap<&'static str, fn(&Table, &Table) -> Module>
@ -29,6 +30,7 @@ impl ModuleLoader {
types.insert("pvn", PvnModule::new as fn(&Table, &Table) -> Module); types.insert("pvn", PvnModule::new as fn(&Table, &Table) -> Module);
types.insert("echobox", EchoboxModule::new as fn(&Table, &Table) -> Module); types.insert("echobox", EchoboxModule::new as fn(&Table, &Table) -> Module);
types.insert("autolink", AutolinkModule::new as fn(&Table, &Table) -> Module); types.insert("autolink", AutolinkModule::new as fn(&Table, &Table) -> Module);
types.insert("logger", LoggerModule::new as fn(&Table, &Table) -> Module);
ModuleLoader { ModuleLoader {
types: types types: types
} }

34
src/modules/logger.rs Normal file
View File

@ -0,0 +1,34 @@
use modules::{Module, EventLoop};
use toml::Table;
use std::sync::Arc;
use std::sync::mpsc::Receiver;
use transformable_channels::mpsc::ExtSender;
use helpers::command::split_command;
use event::{Event, Envelope};
pub struct LoggerModule {}
impl LoggerModule {
pub fn new (_: &Table, configuration: &Table) -> Module {
Module {
module_type: String::from("logger"),
event_loop: Box::new(LoggerModule {}),
config: configuration.clone()
}
}
}
impl EventLoop for LoggerModule {
fn run(&self, _: Box<ExtSender<Envelope>>, receiver: Receiver<Arc<Envelope>>) {
loop {
match receiver.recv() {
Ok(envelope) => {
info!("Received event envelope: {:?}", envelope);
}
Err(error) => { error!("Error {:?}", error) }
}
}
}
}