use std::io::{BufWriter, stdout};
use flowscope::{
FlowTracker, emit::FlowEventNdjsonWriter, extract::FiveTuple, pcap::PcapFlowSource,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let path = std::env::args()
.nth(1)
.unwrap_or_else(|| "tests/data/mixed_short.pcap".to_string());
let mut tracker = FlowTracker::<FiveTuple>::new(FiveTuple::bidirectional());
let mut ndjson = FlowEventNdjsonWriter::new(BufWriter::new(stdout().lock()));
for owned in PcapFlowSource::open(&path)?.views() {
let owned = owned?;
for ev in tracker.track(&owned) {
ndjson.write_event(&ev)?;
}
}
for ev in tracker.finish() {
ndjson.write_event(&ev)?;
}
ndjson.finish()?;
Ok(())
}