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