tensorboard_rs/
record_writer.rs1use 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 }