use std::io::{BufWriter, stdout};
use flowscope::FlowTracker;
use flowscope::emit::FlowEventNdjsonWriter;
use flowscope::extract::FiveTuple;
use flowscope::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(())
}