diff --git a/src/modules/loader.rs b/src/modules/loader.rs index 4dd78ce..9ead7ca 100644 --- a/src/modules/loader.rs +++ b/src/modules/loader.rs @@ -13,6 +13,7 @@ use modules::random::RandomModule; use modules::pvn::PvnModule; use modules::echobox::EchoboxModule; use modules::autolink::AutolinkModule; +use modules::logger::LoggerModule; pub struct ModuleLoader { 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("echobox", EchoboxModule::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 { types: types } diff --git a/src/modules/logger.rs b/src/modules/logger.rs new file mode 100644 index 0000000..a549c6e --- /dev/null +++ b/src/modules/logger.rs @@ -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>, receiver: Receiver>) { + loop { + match receiver.recv() { + Ok(envelope) => { + info!("Received event envelope: {:?}", envelope); + } + Err(error) => { error!("Error {:?}", error) } + } + } + } +}