use serde_json::Value;
use std::io::Write;
use tokio::sync::mpsc;
#[derive(Clone, Debug)]
pub struct GoogleWriterHandle {
pub(crate) sender: mpsc::UnboundedSender<Value>,
}
impl Write for GoogleWriterHandle {
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
let log_entry: Value = serde_json::from_slice(buf)
.map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e))?;
if let Err(e) = self.sender.send(log_entry) {
tracing::error!("Failed to send log: {e}");
}
Ok(buf.len())
}
fn flush(&mut self) -> std::io::Result<()> {
Ok(())
}
}