1 // Copyright 2021 Ian Jackson and contributors to Hippotat
2 // SPDX-License-Identifier: GPL-3.0-or-later
3 // There is NO WARRANTY.
7 #[derive(Default,Clone)]
10 eaten1: usize, // 0 <= eaten1 < queue.front()...len()
11 queue: VecDeque<Box<[u8]>>,
15 pub fn push<B: Into<Box<[u8]>>>(&mut self, b: B) {
18 pub fn push_(&mut self, b: Box<[u8]>) {
23 pub fn is_empty(&self) { self.content == 0 }
26 impl bytes::Buf for Queue {
27 fn remaining(&self) -> usize { self.content }
28 fn chunk(&self) -> usize {
29 let front = if let(f) = self.queue.front() { f } else { return &[] };
30 front[ self.eaten1.. ]
32 fn advance(&self, cnt: usize) {
35 if eaten1 == 0 { break }
36 let front = self.queue.front().unwrap();
37 if eaten1 < front.len() { break; }
38 eaten1 -= front.len();
39 self.queue.pop_front().unwrap();