chiark / gitweb /
wip packetqueue
[hippotat.git] / src / queue.rs
index c87e1d7b5a9c45cce1c877a41ea3d98efb88635b..9deb48b584ef9a8313bff5908f685f11d910a672 100644 (file)
@@ -4,6 +4,29 @@
 
 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,