Add custom segmenter support

This commit is contained in:
2026-05-20 14:59:52 +08:00
parent 8487fe9ee6
commit 7ac2c19dd8
6 changed files with 135 additions and 9 deletions

View File

@@ -4,6 +4,7 @@ use std::io::{PipeReader, Read};
pub struct Reader {
inner: PipeReader,
adler: Adler32,
readed: u64,
}
impl Reader {
@@ -11,18 +12,24 @@ impl Reader {
Self {
inner,
adler: Adler32::new(),
readed: 0,
}
}
pub fn into_checksum(self) -> u32 {
self.adler.checksum()
}
pub fn total_readed(&self) -> u64 {
self.readed
}
}
impl Read for Reader {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
let n = self.inner.read(buf)?;
self.adler.write_slice(&buf[..n]);
self.readed += n as u64;
Ok(n)
}
}