add a stanza_debug plugin, printing every stanza on stdout

Emmanuel Gil Peyrot created

Change summary

src/plugins/mod.rs          |  1 +
src/plugins/stanza_debug.rs | 29 +++++++++++++++++++++++++++++
2 files changed, 30 insertions(+)

Detailed changes

src/plugins/mod.rs 🔗

@@ -2,3 +2,4 @@ pub mod messaging;
 pub mod presence;
 pub mod ping;
 pub mod stanza;
+pub mod stanza_debug;

src/plugins/stanza_debug.rs 🔗

@@ -0,0 +1,29 @@
+use plugin::PluginProxy;
+use event::{SendElement, ReceiveElement, Propagation, Priority};
+
+pub struct StanzaDebugPlugin {
+    proxy: PluginProxy,
+}
+
+impl StanzaDebugPlugin {
+    pub fn new() -> StanzaDebugPlugin {
+        StanzaDebugPlugin {
+            proxy: PluginProxy::new(),
+        }
+    }
+
+    fn handle_send_element(&self, evt: &SendElement) -> Propagation {
+        println!("SEND: {:?}", evt.0);
+        Propagation::Continue
+    }
+
+    fn handle_receive_element(&self, evt: &ReceiveElement) -> Propagation {
+        println!("RECV: {:?}", evt.0);
+        Propagation::Continue
+    }
+}
+
+impl_plugin!(StanzaDebugPlugin, proxy, [
+    (SendElement, Priority::Min) => handle_send_element,
+    (ReceiveElement, Priority::Max) => handle_receive_element,
+]);