From e62243a72a3cba960db7ba7e02fffc3fb5f76059 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 22 Aug 2021 16:11:45 +0100 Subject: [PATCH] wip packetqueue Signed-off-by: Ian Jackson --- server/suser.rs | 2 +- src/queue.rs | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/server/suser.rs b/server/suser.rs index 28929d9..69881e5 100644 --- a/server/suser.rs +++ b/server/suser.rs @@ -28,7 +28,7 @@ pub async fn run(global: Arc, target_requests_outstanding: u32, } let mut outstanding: VecDeque = default(); - let mut downbound: VecDeque = default(); + let mut downbound: PacketQueue = default(); let try_send_response = | reply_to: oneshot::Sender, diff --git a/src/queue.rs b/src/queue.rs index c87e1d7..9deb48b 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -4,6 +4,29 @@ use crate::prelude::*; +// xxx are we using this at all ? +#[derive(Default,Clone)] +pub struct PacketQueue { + queue: VecDeque, + content: usize, +} + +impl PacketQueue 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 { + 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 { content: usize, -- 2.30.2