From: Ian Jackson Date: Tue, 3 Aug 2021 18:40:04 +0000 (+0100) Subject: use queue X-Git-Tag: hippotat/1.0.0~370 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=f5dd78f6d5455acf80e61502268cd02b49369345;p=hippotat.git use queue Signed-off-by: Ian Jackson --- diff --git a/src/bin/client.rs b/src/bin/client.rs index 46d8609..1af2d30 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -193,13 +193,7 @@ async fn run_client( let mut reqs: Vec = Vec::with_capacity(ic.max_requests_outstanding.sat()); - let mut rx_queue: VecDeque> = default(); - #[derive(Debug)] - enum RxState { - Frame(Cursor>), - End, - } - let mut rx_current: Option = None; + let mut rx_queue: Queue = default(); // xxx check that ic settings are all honoured @@ -262,7 +256,7 @@ async fn run_client( Ok(()) }, |e| error!("{} #{}: rx discarding: {}", &ic, req_num, e)); - dbg!(&rx_queue.len()); + dbg!(&rx_queue.remaining()); rx_queue = default(); // xxx } } diff --git a/src/prelude.rs b/src/prelude.rs index fd3c50b..c9c11be 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -45,6 +45,7 @@ pub use void::{self, Void, ResultVoidExt, ResultVoidErrExt}; pub use crate::config::{self, InstanceConfig, u32Ext as _}; pub use crate::utils::*; +pub use crate::queue::*; pub use crate::reporter::*; pub use crate::types::*; pub use crate::slip::*; diff --git a/src/queue.rs b/src/queue.rs index 41691af..a7e0bb5 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -17,12 +17,20 @@ impl Queue { } pub fn push_(&mut self, b: Box<[u8]>) { let l = b.len(); - self.push(b); + self.queue.push_back(b); self.content += l; } pub fn is_empty(&self) -> bool { self.content == 0 } } +impl Extend for Queue where B: Into> { + fn extend(&mut self, it: I) + where I: IntoIterator + { + for b in it { self.push(b) } + } +} + impl hyper::body::Buf for Queue { fn remaining(&self) -> usize { self.content } fn chunk(&self) -> &[u8] {