let mut reqs: Vec<OutstandingRequest>
= Vec::with_capacity(ic.max_requests_outstanding.sat());
- let mut rx_queue: VecDeque<Box<[u8]>> = default();
- #[derive(Debug)]
- enum RxState {
- Frame(Cursor<Box<u8>>),
- End,
- }
- let mut rx_current: Option<RxState> = None;
+ let mut rx_queue: Queue = default();
// xxx check that ic settings are all honoured
Ok(())
}, |e| error!("{} #{}: rx discarding: {}", &ic, req_num, e));
- dbg!(&rx_queue.len());
+ dbg!(&rx_queue.remaining());
rx_queue = default(); // xxx
}
}
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::*;
}
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<B> Extend<B> for Queue where B: Into<Box<[u8]>> {
+ fn extend<I>(&mut self, it: I)
+ where I: IntoIterator<Item=B>
+ {
+ for b in it { self.push(b) }
+ }
+}
+
impl hyper::body::Buf for Queue {
fn remaining(&self) -> usize { self.content }
fn chunk(&self) -> &[u8] {