use anyhow::Result; use std::fs::File; use std::io::{BufWriter, Write}; use std::path::Path; use crate::router::RouteDecision; pub struct RoutingLogWriter { inner: BufWriter, } impl RoutingLogWriter { pub fn create>(path: P) -> Result { let f = File::create(path)?; Ok(Self { inner: BufWriter::new(f) }) } pub fn write(&mut self, decision: &RouteDecision) -> Result<()> { let line = serde_json::to_string(decision)?; self.inner.write_all(line.as_bytes())?; self.inner.write_all(b"\n")?; Ok(()) } pub fn finish(mut self) -> Result<()> { self.inner.flush()?; Ok(()) } }