tensorboard_rs/
record_writer.rs

1use crate::masked_crc32c::masked_crc32c;
2use std::io::Write;
3
4pub struct RecordWriter<W: Write> {
5    _writer: W,
6}
7impl<W: Write> RecordWriter<W> {
8    pub fn new(writer: W) -> RecordWriter<W> where W: Write{
9        RecordWriter {
10            _writer: writer,
11        }
12    }
13    pub fn write(&mut self, data: &[u8]) -> std::io::Result<()>{
14        let header = data.len() as u64;
15        let header_crc = (masked_crc32c(&(header.to_le_bytes())) as u32).to_le_bytes();
16        let footer_crc = (masked_crc32c(data) as u32).to_le_bytes();
17        let header = header.to_le_bytes();
18
19        self._writer.write_all(&header)?;
20        self._writer.write_all(&header_crc)?;
21        self._writer.write_all(data)?;
22        self._writer.write_all(&footer_crc)
23    }
24    pub fn flush(&mut self) -> std::io::Result<()> {
25        self._writer.flush()
26    }
27    //pub fn close() {}
28    //pub fn closed() {}
29}