implemented listeners for transfered event [CI SKIP]
This commit is contained in:
@@ -50,7 +50,7 @@ pub(crate) fn gen_events(
|
||||
}
|
||||
if prev.traffic != cur.traffic {
|
||||
if let ((p_tx, p_rx), (c_tx, c_rx)) = (prev.traffic, cur.traffic) {
|
||||
listeners.fire(Event::Tranfered {
|
||||
listeners.fire(Event::Transfered {
|
||||
peer: &cur,
|
||||
tx: c_tx - p_tx,
|
||||
rx: c_rx - p_rx,
|
||||
|
@@ -1,4 +1,5 @@
|
||||
use crate::Peer;
|
||||
use number_prefix::{NumberPrefix, Prefixed, Standalone};
|
||||
use std::net::SocketAddr;
|
||||
use std::path::PathBuf;
|
||||
use std::process::Command;
|
||||
@@ -13,14 +14,19 @@ pub enum Event<'a> {
|
||||
Connected(&'a Peer),
|
||||
Disconnected(&'a Peer),
|
||||
Roamed(&'a Peer, SocketAddr),
|
||||
Tranfered { peer: &'a Peer, tx: u64, rx: u64 },
|
||||
Transfered { peer: &'a Peer, tx: u64, rx: u64 },
|
||||
}
|
||||
|
||||
pub trait EventListener {
|
||||
fn name(&self) -> &'static str;
|
||||
|
||||
fn fire<'a>(&self, event: Event<'a>);
|
||||
}
|
||||
|
||||
impl EventListener for Vec<Box<EventListener>> {
|
||||
fn name(&self) -> &'static str {
|
||||
"List of Listeners"
|
||||
}
|
||||
fn fire<'a>(&self, event: Event<'a>) {
|
||||
self.iter().for_each(|l| l.fire(event.clone()));
|
||||
}
|
||||
@@ -29,6 +35,10 @@ impl EventListener for Vec<Box<EventListener>> {
|
||||
pub struct LogListener;
|
||||
|
||||
impl EventListener for LogListener {
|
||||
fn name(&self) -> &'static str {
|
||||
"Log"
|
||||
}
|
||||
|
||||
fn fire<'a>(&self, event: Event<'a>) {
|
||||
match event {
|
||||
Event::Connected(peer) => println!("{} connected!", peer.key),
|
||||
@@ -41,9 +51,19 @@ impl EventListener for LogListener {
|
||||
previous_addr,
|
||||
peer.endpoint.unwrap()
|
||||
),
|
||||
Event::Tranfered { peer, tx, rx } => {
|
||||
println!("{} transfered {} up, {} down", peer.key, tx, rx)
|
||||
Event::Transfered { peer, tx, rx } => {
|
||||
let prefix = |cnt: u64| match NumberPrefix::binary(cnt as f64) {
|
||||
Standalone(bytes) => format!("{}B", bytes),
|
||||
Prefixed(prefix, n) => format!("{:.0} {}B", n, prefix),
|
||||
};
|
||||
println!(
|
||||
"{} transfered {} up, {} down",
|
||||
peer.key,
|
||||
prefix(tx),
|
||||
prefix(rx)
|
||||
);
|
||||
}
|
||||
|
||||
_ => unimplemented!(),
|
||||
}
|
||||
}
|
||||
@@ -107,6 +127,9 @@ impl ScriptListener {
|
||||
}
|
||||
|
||||
impl EventListener for ScriptListener {
|
||||
fn name(&self) -> &'static str {
|
||||
"Script"
|
||||
}
|
||||
fn fire<'a>(&self, event: Event<'a>) {
|
||||
match event {
|
||||
Event::Connected(peer) => self.call_sub(vec!["connected", &self.peer_props(peer)]),
|
||||
@@ -120,6 +143,12 @@ impl EventListener for ScriptListener {
|
||||
&self.peer_props(peer),
|
||||
&previous_addr.to_string(),
|
||||
]),
|
||||
Event::Transfered { peer, tx, rx } => self.call_sub(vec![
|
||||
"transfered",
|
||||
&self.peer_props(peer),
|
||||
&tx.to_string(),
|
||||
&rx.to_string(),
|
||||
]),
|
||||
_ => unimplemented!(),
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user