use std::io::{BufWriter, stdout};
use flowscope::{FlowTracker, emit::FlowEventCsvWriter, 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 csv = FlowEventCsvWriter::new(BufWriter::new(stdout().lock()))?;
for owned in PcapFlowSource::open(&path)?.views() {
let owned = owned?;
for ev in tracker.track(&owned) {
csv.write_event(&ev)?;
}
}
for ev in tracker.finish() {
csv.write_event(&ev)?;
}
csv.finish()?;
Ok(())
}