diff options
| -rw-r--r-- | src/main.rs | 16 | ||||
| -rw-r--r-- | src/pinger.rs | 5 | ||||
| -rw-r--r-- | src/print.rs | 10 | ||||
| -rw-r--r-- | src/stats.rs | 7 |
4 files changed, 11 insertions, 27 deletions
diff --git a/src/main.rs b/src/main.rs index e2c179e..5f4f1e0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -75,16 +75,14 @@ async fn main() { states[id as usize] = State::Received { rtt: rtt, ttl }; } } - PingResult::NoPingErr { id: _, ref error } => { - // FEAT: It should fail if states is empty and print a informative characters on the line otherwise - eprintln!("Error: {}", error); - std::process::exit(2); + PingResult::NoPingErr { id } => { + states[id as usize] = State::SendError; } } } Err(TryRecvError::Disconnected) => { - // NOTE: Maybe we should quit, I don't know. - break; + eprintln!("Critical error, pinger thread killed"); + std::process::exit(2); } Err(TryRecvError::Empty) => { // No more ping to read @@ -95,7 +93,7 @@ async fn main() { // Put the cursor back up if !std::process::Command::new("tput").arg("rc").status().map(|s| s.success()).unwrap_or(false) { - println!("Process failed too"); + println!("Process failed too"); std::process::exit(1); } @@ -108,12 +106,12 @@ async fn main() { print_stats(&stats); } // Print stats of the last 30 pings - let firstIndex = if (states.len() as i32) - 30 > 0 { + let first_index = if (states.len() as i32) - 30 > 0 { states.len() - 30 } else { 0 }; - if let Some(stats) = compute_stats(&states[firstIndex..]) { + if let Some(stats) = compute_stats(&states[first_index..]) { print_stats(&stats); } } diff --git a/src/pinger.rs b/src/pinger.rs index d7d052b..3570ad1 100644 --- a/src/pinger.rs +++ b/src/pinger.rs @@ -4,12 +4,11 @@ use tokio::sync::mpsc::Sender; use tokio::task; pub enum PingResult { - NoPingErr { id: u32, error: String }, + NoPingErr { id: u32 }, Ping { rtt: u64, ttl: u32, id: u32 }, } pub fn spawn_ping(target: IpAddr, tx: Sender<PingResult>, id: u32) { - // let _ = tx.try_send(PingResult::NoPingErr { id, error: "Test Ping".to_string() }); task::spawn_blocking(move || { let result = do_ping(target, id); let _ = tx.try_send(result); @@ -30,6 +29,6 @@ fn do_ping(target: IpAddr, id: u32) -> PingResult { ttl: reply.ttl.unwrap_or(0) as u32, id, }, - Err(e) => PingResult::NoPingErr { id, error: format!("Ping failed: {}", e) }, + Err(_) => PingResult::NoPingErr { id }, } } diff --git a/src/print.rs b/src/print.rs index 14dc80f..28e1b9e 100644 --- a/src/print.rs +++ b/src/print.rs @@ -12,11 +12,10 @@ struct SymbolTableElement { const GREEN_FG :&str = "\x1b[32m"; const ORANGE_FG :&str = "\x1b[38;5;208m"; const RED_FG :&str = "\x1b[31m"; -const BLACK_FG :&str = "\x1b[31m"; +// const BLACK_FG :&str = "\x1b[31m"; const BLACK_BG :&str = "\x1b[40m"; const GREEN_BG :&str = "\x1b[40m"; const ORANGE_BG :&str = "\x1b[48;5;208m"; -const RESET :&str= "\x1b[40m"; const ERASE_LINE_END:&str = "\x1b[0K"; const CHARS_TABLE :[SymbolTableElement; 25] = [ @@ -47,13 +46,6 @@ const CHARS_TABLE :[SymbolTableElement; 25] = [ SymbolTableElement{ fg: RED_FG, bg: BLACK_BG, character: "?"} ]; -pub fn print_info_line() { - for n in 0..24 { - let (fg, bg, symbol) = get_symbol_and_colors_for_rrt(n as u64); - print!("{} {}{}{}\x1b033[0m ", n*10, fg, bg, symbol); - } -} - pub fn print_legende_line() { for (index, element) in CHARS_TABLE.iter().enumerate() { let val = 10 * index as u64; diff --git a/src/stats.rs b/src/stats.rs index 0829845..1d2f451 100644 --- a/src/stats.rs +++ b/src/stats.rs @@ -15,8 +15,6 @@ pub struct Stats { pub min_ttl: u32, pub max_ttl: u32, pub avg_ttl: f64, - /// Mean absolute difference (deviation) from the average - pub mad_ttl: f64, } pub fn compute_stats(states: &[crate::state::State]) -> Option<Stats> { @@ -53,8 +51,6 @@ pub fn compute_stats(states: &[crate::state::State]) -> Option<Stats> { let sum_ttl: u32 = ttls.iter().sum(); let avg_ttl = sum_ttl as f64 / ttls.len() as f64; - let mad_ttl: f64 = ttls.iter().map(|&x| (x as f64 - avg_ttl).abs()).sum::<f64>() / ttls.len() as f64; - Some(Stats { received, lost, @@ -64,7 +60,6 @@ pub fn compute_stats(states: &[crate::state::State]) -> Option<Stats> { mad_rtt, min_ttl, max_ttl, - avg_ttl, - mad_ttl + avg_ttl }) } |