use std::time::Duration;
use netring::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let iface = std::env::args().nth(1).unwrap_or_else(|| "lo".into());
eprintln!("monitor_report_stream: bandwidth snapshots as JSON on {iface} (Ctrl-C to stop)");
Monitor::builder()
.interface(&iface)
.bandwidth_by_app()
.report_to(
Duration::from_secs(5),
|snap: ReportSnapshot<'_, '_>| {
snap.bandwidth()
.map(|bw| bw.to_snapshot(10))
.unwrap_or(BandwidthSnapshot { apps: vec![] })
},
JsonReportSink,
)
.sink(StdoutSink::default())
.build()?
.run_until_signal()
.await?;
Ok(())
}