target_requests_outstanding: u32,
}
let mut outstanding: VecDeque<Outstanding> = default();
- let mut downbound: VecDeque<RoutedPacketData> = default();
+ let mut downbound: PacketQueue<RoutedPacketData> = default();
let try_send_response = |
reply_to: oneshot::Sender<WebResponse>,
use crate::prelude::*;
+// xxx are we using this at all ?
+#[derive(Default,Clone)]
+pub struct PacketQueue<D> {
+ queue: VecDeque<D>,
+ content: usize,
+}
+
+impl<D> PacketQueue<D> where D: AsRef<[u8]> {
+ pub fn push_back(&mut self, data: D) {
+ self.content += data.as_ref().len();
+ self.queue.push_back(data);
+ }
+
+ pub fn pop_front(&mut self) -> Option<D> {
+ let data = self.queue.pop_front()?;
+ self.content -= data.as_ref().len();
+ Some(data)
+ }
+
+ pub fn is_empty(&self) -> bool { self.queue.is_empty() }
+ pub fn peek_front(&self) -> Option<&D> { self.queue.front() }
+}
+
#[derive(Default,Clone)]
pub struct QueueBuf<E> {
content: usize,