mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
* chore: pass platform info to rust side * chore: pass platform info to rust side * chore: fix test * chore: fix test * chore: fix test * chore: enable ios log
38 lines
683 B
Rust
38 lines
683 B
Rust
use std::io;
|
|
use std::io::Write;
|
|
use std::sync::Arc;
|
|
use tracing_subscriber::fmt::MakeWriter;
|
|
|
|
pub struct StreamLog {
|
|
pub sender: Arc<dyn StreamLogSender>,
|
|
}
|
|
|
|
impl<'a> MakeWriter<'a> for StreamLog {
|
|
type Writer = SenderWriter;
|
|
|
|
fn make_writer(&'a self) -> Self::Writer {
|
|
SenderWriter {
|
|
sender: self.sender.clone(),
|
|
}
|
|
}
|
|
}
|
|
|
|
pub trait StreamLogSender: Send + Sync {
|
|
fn send(&self, message: &[u8]);
|
|
}
|
|
|
|
pub struct SenderWriter {
|
|
sender: Arc<dyn StreamLogSender>,
|
|
}
|
|
|
|
impl Write for SenderWriter {
|
|
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
|
|
self.sender.send(buf);
|
|
Ok(buf.len())
|
|
}
|
|
|
|
fn flush(&mut self) -> io::Result<()> {
|
|
Ok(())
|
|
}
|
|
}
|