Add extend function to ogg_pager

Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
This commit is contained in:
Serial 2021-06-27 12:44:22 -04:00
parent abe18f6242
commit 5481061149
2 changed files with 37 additions and 1 deletions

View file

@ -1,6 +1,6 @@
[package]
name = "ogg_pager"
version = "0.1.2"
version = "0.1.3"
authors = ["Serial <69764315+Serial-ATA@users.noreply.github.com>"]
edition = "2018"

View file

@ -100,6 +100,42 @@ impl Page {
pub fn gen_crc(&mut self) {
self.checksum = crc::crc32(&*self.as_bytes());
}
pub fn extend(&mut self, content: &[u8]) -> Option<Page> {
let self_len = self.content.len();
let content_len = content.len();
if self_len <= 65025 && self_len + content_len <= 65025 {
self.content.extend(content.iter());
self.end += content_len;
return None;
}
if content_len <= 65025 {
let remaining = 65025 - self_len;
self.content.extend(content[0..remaining].iter());
self.end += remaining;
let mut p = Page {
content: content[remaining..].to_vec(),
header_type: 1,
abgp: 0,
serial: self.serial,
seq_num: self.seq_num + 1,
checksum: 0,
start: self.end,
end: self.start + content.len(),
};
p.gen_crc();
return Some(p);
}
None
}
}
pub fn segments(cont: &[u8]) -> Vec<u8> {