mirror of
https://github.com/Serial-ATA/lofty-rs
synced 2025-03-04 14:57:17 +00:00
Add extend function to ogg_pager
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
This commit is contained in:
parent
abe18f6242
commit
5481061149
2 changed files with 37 additions and 1 deletions
|
@ -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"
|
||||
|
||||
|
|
|
@ -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> {
|
||||
|
|
Loading…
Add table
Reference in a new issue