1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
#[derive(Debug)] pub struct Buffer { pub size: Option<usize>, pub position: u64, pub buffer: Vec<u8> } impl Buffer { pub fn create() -> Buffer { Buffer{ size: None, position: 0, buffer: Vec::new() } } pub fn get_cached_size(&self) -> usize { self.buffer.len() } pub fn get_data(&mut self, size: usize) -> Vec<u8> { let next_data = self.buffer.split_off(size); let data = self.buffer.clone(); self.buffer = next_data; debug!("left #{:?}", self.buffer.len()); data } pub fn append_data(&mut self, full_data: &Vec<u8>) { self.buffer.extend_from_slice(full_data); } pub fn reset(&mut self) { self.buffer = Vec::new(); self.position = 0; } }