#[derive(Default)]
pub struct Reservoir {
buf: Vec<u8>,
}
impl Reservoir {
pub fn assemble(&mut self, main_data_begin: u16, frame_main_data: &[u8]) -> Vec<u8> {
let begin = main_data_begin as usize;
let mut out = Vec::with_capacity(begin + frame_main_data.len());
let tail = self.buf.len().saturating_sub(begin);
out.extend_from_slice(&self.buf[tail..]);
out.extend_from_slice(frame_main_data);
self.buf = out.iter().rev().take(512).rev().copied().collect();
out
}
pub fn reset(&mut self) {
self.buf.clear();
}
}