diff --git a/wg-event-gen/src/gen.rs b/wg-event-gen/src/gen.rs index 8f567c2..8091896 100644 --- a/wg-event-gen/src/gen.rs +++ b/wg-event-gen/src/gen.rs @@ -62,6 +62,15 @@ pub(crate) fn gen_events( //dbg!(other); } } + if prev.traffic != cur.traffic { + if let ((p_tx, p_rx), (c_tx, c_rx)) = (prev.traffic, cur.traffic) { + listeners.fire(Event::Tranfered { + peer: &cur, + tx: c_tx - p_tx, + rx: c_rx - p_rx, + }); + } + } } (None, Some(cur)) => listeners.fire(Event::Added(&cur)), (Some(prev), None) => listeners.fire(Event::Removed(&prev)), diff --git a/wg-event-gen/src/listener.rs b/wg-event-gen/src/listener.rs index 0d6e0bc..8b8562f 100644 --- a/wg-event-gen/src/listener.rs +++ b/wg-event-gen/src/listener.rs @@ -13,6 +13,7 @@ pub enum Event<'a> { Connected(&'a Peer), Disconnected(&'a Peer), Roamed(&'a Peer, SocketAddr), + Tranfered { peer: &'a Peer, tx: u64, rx: u64 }, } pub trait EventListener { @@ -40,6 +41,9 @@ impl EventListener for LogListener { previous_addr, peer.endpoint.unwrap() ), + Event::Tranfered { peer, tx, rx } => { + println!("{} transfered {} up, {} down", peer.key, tx, rx) + } _ => unimplemented!(), } }