use serde::Serialize; use tokio::io::{self, AsyncWriteExt, WriteHalf}; use tokio::net::UnixStream; pub(crate) struct Writer { stream: WriteHalf, } impl From> for Writer { fn from(stream: WriteHalf) -> Self { Self { stream } } } impl Writer { pub async fn write(&mut self, data: &T) -> Result<(), io::Error> { let data = serde_json::to_string(data)?; let data = format!("{}\n\n", data); self.stream.write_all(data.as_bytes()).await?; self.stream.flush().await?; Ok(()) } }