refactor(irtt-cli): rename stream output helper

This commit is contained in:
Nils Andreas Svee committed 2026-05-13 22:12:03 +07:00
1 parent f5c35e8142
commit 61c527eb26
1 file changed
+27 -27
+27 -27
View File
@@ -71,7 +71,7 @@ fn run(args: CliArgs, shutdown_requested: &AtomicBool) -> Result<(), Box<dyn std
let mut stdout = io::LineWriter::new(io::stdout().lock()); let mut stdout = io::LineWriter::new(io::stdout().lock());
#[cfg(feature = "stats")] #[cfg(feature = "stats")]
let mut stats = StatsCollector::new(stats_config(continuous)); let mut stats = StatsCollector::new(stats_config(continuous));
let mut output = EventOutput { let mut stream_output = StreamOutput {
mode, mode,
human_options: HumanOutputOptions { human_options: HumanOutputOptions {
verbose: args.verbose, verbose: args.verbose,
@@ -94,20 +94,20 @@ fn run(args: CliArgs, shutdown_requested: &AtomicBool) -> Result<(), Box<dyn std
} }
let open = client.open()?; let open = client.open()?;
output.print_event(open_event(&open))?; stream_output.print_event(open_event(&open))?;
let mut interrupted = false; let mut interrupted = false;
while should_continue_run(continuous, client.next_send_deadline(), shutdown_requested) { while should_continue_run(continuous, client.next_send_deadline(), shutdown_requested) {
if should_send_probe(client.next_send_deadline(), shutdown_requested) { if should_send_probe(client.next_send_deadline(), shutdown_requested) {
let events = client.send_probe()?; let events = client.send_probe()?;
output.print_events(&events)?; stream_output.print_events(&events)?;
} }
let events = client.recv_available(RECV_BUDGET)?; let events = client.recv_available(RECV_BUDGET)?;
output.print_events(&events)?; stream_output.print_events(&events)?;
let events = client.poll_timeouts()?; let events = client.poll_timeouts()?;
output.print_events(&events)?; stream_output.print_events(&events)?;
if is_shutdown_requested(shutdown_requested) { if is_shutdown_requested(shutdown_requested) {
interrupted = true; interrupted = true;
@@ -123,19 +123,19 @@ fn run(args: CliArgs, shutdown_requested: &AtomicBool) -> Result<(), Box<dyn std
} }
if should_drain_final(continuous, interrupted) { if should_drain_final(continuous, interrupted) {
drain_final_replies(&mut client, &mut output)?; drain_final_replies(&mut client, &mut stream_output)?;
} }
let events = client.poll_timeouts()?; let events = client.poll_timeouts()?;
output.print_events(&events)?; stream_output.print_events(&events)?;
let events = client.close()?; let events = client.close()?;
output.print_events(&events)?; stream_output.print_events(&events)?;
let print_final_summary = should_print_final_summary(continuous, interrupted); let print_final_summary = should_print_final_summary(continuous, interrupted);
output.print_final_summary = print_final_summary; stream_output.print_final_summary = print_final_summary;
output.show_running_only_summary_note = continuous && interrupted && print_final_summary; stream_output.show_running_only_summary_note = continuous && interrupted && print_final_summary;
output.print_summary()?; stream_output.print_summary()?;
output.out.flush()?; stream_output.out.flush()?;
Ok(()) Ok(())
} }
@@ -172,7 +172,7 @@ fn open_event(outcome: &OpenOutcome) -> &ClientEvent {
fn drain_final_replies<W: Write>( fn drain_final_replies<W: Write>(
client: &mut Client, client: &mut Client,
output: &mut EventOutput<'_, W>, stream_output: &mut StreamOutput<'_, W>,
) -> Result<(), Box<dyn std::error::Error>> { ) -> Result<(), Box<dyn std::error::Error>> {
let deadline = Instant::now() + final_drain_duration(client.probe_timeout()); let deadline = Instant::now() + final_drain_duration(client.probe_timeout());
loop { loop {
@@ -180,11 +180,11 @@ fn drain_final_replies<W: Write>(
let events = client.recv_available(RECV_BUDGET)?; let events = client.recv_available(RECV_BUDGET)?;
printed |= !events.is_empty(); printed |= !events.is_empty();
output.print_events(&events)?; stream_output.print_events(&events)?;
let events = client.poll_timeouts()?; let events = client.poll_timeouts()?;
printed |= !events.is_empty(); printed |= !events.is_empty();
output.print_events(&events)?; stream_output.print_events(&events)?;
if client.is_run_complete() || Instant::now() >= deadline { if client.is_run_complete() || Instant::now() >= deadline {
break; break;
@@ -209,7 +209,7 @@ fn sleep_until_next_send(deadline: Option<Instant>) {
} }
} }
struct EventOutput<'a, W: Write> { struct StreamOutput<'a, W: Write> {
mode: irtt_cli::OutputMode, mode: irtt_cli::OutputMode,
human_options: HumanOutputOptions, human_options: HumanOutputOptions,
print_final_summary: bool, print_final_summary: bool,
@@ -219,7 +219,7 @@ struct EventOutput<'a, W: Write> {
stats: &'a mut StatsCollector, stats: &'a mut StatsCollector,
} }
impl<W: Write> EventOutput<'_, W> { impl<W: Write> StreamOutput<'_, W> {
fn print_events(&mut self, events: &[ClientEvent]) -> io::Result<()> { fn print_events(&mut self, events: &[ClientEvent]) -> io::Result<()> {
for event in events { for event in events {
self.print_event(event)?; self.print_event(event)?;
@@ -472,7 +472,7 @@ mod tests {
let mut stats = StatsCollector::new(StatsConfig::finite()); let mut stats = StatsCollector::new(StatsConfig::finite());
let mut out = Vec::new(); let mut out = Vec::new();
{ {
let mut output = EventOutput { let mut stream_output = StreamOutput {
mode: irtt_cli::OutputMode::RttUs, mode: irtt_cli::OutputMode::RttUs,
human_options: HumanOutputOptions::default(), human_options: HumanOutputOptions::default(),
print_final_summary: true, print_final_summary: true,
@@ -480,8 +480,8 @@ mod tests {
out: &mut out, out: &mut out,
stats: &mut stats, stats: &mut stats,
}; };
output.print_events(&events).unwrap(); stream_output.print_events(&events).unwrap();
output.print_summary().unwrap(); stream_output.print_summary().unwrap();
} }
let rendered = String::from_utf8(out).unwrap(); let rendered = String::from_utf8(out).unwrap();
@@ -496,7 +496,7 @@ mod tests {
let mut stats = StatsCollector::new(StatsConfig::continuous()); let mut stats = StatsCollector::new(StatsConfig::continuous());
let mut out = Vec::new(); let mut out = Vec::new();
{ {
let mut output = EventOutput { let mut stream_output = StreamOutput {
mode: irtt_cli::OutputMode::Human, mode: irtt_cli::OutputMode::Human,
human_options: HumanOutputOptions::default(), human_options: HumanOutputOptions::default(),
print_final_summary: false, print_final_summary: false,
@@ -504,7 +504,7 @@ mod tests {
out: &mut out, out: &mut out,
stats: &mut stats, stats: &mut stats,
}; };
output.print_summary().unwrap(); stream_output.print_summary().unwrap();
} }
assert!(out.is_empty()); assert!(out.is_empty());
@@ -515,7 +515,7 @@ mod tests {
let mut stats = StatsCollector::new(StatsConfig::continuous()); let mut stats = StatsCollector::new(StatsConfig::continuous());
let mut out = Vec::new(); let mut out = Vec::new();
{ {
let mut output = EventOutput { let mut stream_output = StreamOutput {
mode: irtt_cli::OutputMode::Human, mode: irtt_cli::OutputMode::Human,
human_options: HumanOutputOptions::default(), human_options: HumanOutputOptions::default(),
print_final_summary: true, print_final_summary: true,
@@ -523,8 +523,8 @@ mod tests {
out: &mut out, out: &mut out,
stats: &mut stats, stats: &mut stats,
}; };
output.print_event(&reply_event(1, 1200)).unwrap(); stream_output.print_event(&reply_event(1, 1200)).unwrap();
output.print_summary().unwrap(); stream_output.print_summary().unwrap();
} }
let rendered = String::from_utf8(out).unwrap(); let rendered = String::from_utf8(out).unwrap();
@@ -541,7 +541,7 @@ mod tests {
let mut stats = StatsCollector::new(StatsConfig::finite()); let mut stats = StatsCollector::new(StatsConfig::finite());
let mut out = Vec::new(); let mut out = Vec::new();
{ {
let mut output = EventOutput { let mut stream_output = StreamOutput {
mode: irtt_cli::OutputMode::Human, mode: irtt_cli::OutputMode::Human,
human_options: HumanOutputOptions::default(), human_options: HumanOutputOptions::default(),
print_final_summary: false, print_final_summary: false,
@@ -549,7 +549,7 @@ mod tests {
out: &mut out, out: &mut out,
stats: &mut stats, stats: &mut stats,
}; };
output.print_events(&events).unwrap(); stream_output.print_events(&events).unwrap();
} }
let rendered = String::from_utf8(out).unwrap(); let rendered = String::from_utf8(out).unwrap();