aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2026-08-04 17:17:36 +0200
committerache <ache@ache.one>2026-08-04 17:17:36 +0200
commitb2d4f1d436187e132a7182ed07c446ecfe32320c (patch)
tree49a4429fcd2253ea65ba2f0e02fe8eb6137e35b6
parentPrint stats (diff)
Remove dead print_last_line
-rw-r--r--src/main.rs18
-rw-r--r--src/print.rs44
2 files changed, 19 insertions, 43 deletions
diff --git a/src/main.rs b/src/main.rs
index f6ac365..e2c179e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -13,7 +13,7 @@ mod stats;
use args::Args;
use ip::parse_ip;
use pinger::{spawn_ping, PingResult};
-use print::{print_last_ping_line, print_legende_line, print_ping_line, print_stats};
+use print::{print_legende_line, print_ping_line, print_stats};
use state::State;
use stats::compute_stats;
@@ -108,14 +108,14 @@ async fn main() {
print_stats(&stats);
}
// Print stats of the last 30 pings
- // let firstIndex = if states.len() - 30 > 0 {
- // states.len() - 30
- // } else {
- // 0
- // };
- // if let Some(stats) = compute_stats(&states[firstIndex..]) {
- // print_stats(&stats);
- // }
+ let firstIndex = if (states.len() as i32) - 30 > 0 {
+ states.len() - 30
+ } else {
+ 0
+ };
+ if let Some(stats) = compute_stats(&states[firstIndex..]) {
+ print_stats(&stats);
+ }
}
diff --git a/src/print.rs b/src/print.rs
index 89acffa..14dc80f 100644
--- a/src/print.rs
+++ b/src/print.rs
@@ -10,13 +10,14 @@ 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_BG:&str = "\x1b[40m";
-const GREEN_BG:&str = "\x1b[40m";
-const ORANGE_BG:&str = "\x1b[48;5;208m";
+const ORANGE_FG :&str = "\x1b[38;5;208m";
+const RED_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] = [
SymbolTableElement{ fg: GREEN_FG, bg: BLACK_BG, character: "▁"},
@@ -85,32 +86,6 @@ pub fn print_ping_line(states: &Vec<State>) {
println!("");
}
-pub fn print_last_ping_line(states: &[State], count: usize) {
- let start_idx = if states.len() > count { states.len() - count } else { 0 };
- let slice = &states[start_idx..];
- for state in slice {
- match state {
- State::Received { rtt, .. } => {
- let (fg, bg, symbol) = get_symbol_and_colors_for_rrt(*rtt);
- print!("{}{}{}{}", fg, bg, symbol, "\x1b[0m");
- }
- State::Lost => {
- let (fg, bg, symbol) = get_symbol_and_colors_for_rrt(250);
- print!("{}{}{}{}", fg, bg, symbol, "\x1b[0m");
- }
- State::NotYetReceived { .. } => {
- // fg grey, bg black
- print!("\x1b[35;40m?\x1b[0m");
- }
- State::SendError => {
- print!("!");
- }
- }
- }
-
- println!("");
-}
-
fn get_symbol_and_colors_for_rrt(rrt: u64) -> (&'static str, &'static str, &'static str) {
let index: usize = if rrt >= 240 {
24
@@ -135,7 +110,7 @@ pub fn print_stats(stats: &Stats) {
let mean_ttl_round = stats.avg_ttl.round() as u32;
println!(
- "{}/{} ({:.1}%) | ⌊{}⌋ ⌈{}⌉ [{}] [Δ{}]ms / ⌊{}⌋ ⌈{}⌉ [{}]",
+ "{}/{} ({:.1}%) | ⌊{}⌋ ⌈{}⌉ [{}] [Δ{}]ms / ⌊{}⌋ ⌈{}⌉ [{}]{}",
stats.lost,
total,
percent_lost,
@@ -145,6 +120,7 @@ pub fn print_stats(stats: &Stats) {
mad_rtt_rounded,
stats.min_ttl,
stats.max_ttl,
- mean_ttl_round
+ mean_ttl_round,
+ ERASE_LINE_END
);
}