From 1e8bf33eafe9cd61b8ffa691eea7dfae0e0ac04d Mon Sep 17 00:00:00 2001 From: Jeff Baskin <jeff.l.baskin@gmail.com> Date: Sun, 30 Mar 2025 16:24:58 -0400 Subject: [PATCH] Got a new client message. --- src/queue.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/queue.rs b/src/queue.rs index b9879ae..3ee3017 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -130,10 +130,11 @@ impl Queue { fn listen(&mut self) { loop { - let msg = self.rx.recv().unwrap(); + let mut msg = self.rx.recv().unwrap(); + msg.id = Uuid::max(); let senders = self.registry.read().unwrap(); for sender in senders.iter() { - sender.send(Message::new()).unwrap(); + sender.send(msg.reply(MsgType::ClientMessage)).unwrap(); } } } @@ -146,14 +147,11 @@ mod queues { static TIMEOUT: Duration = Duration::from_millis(500); - fn start_queue() -> ( - Sender<Message>, - Receiver<Message>, - ) { + fn start_queue() -> (Sender<Message>, Receiver<Message>) { let reg: Arc<RwLock<Vec<Sender<Message>>>> = Arc::new(RwLock::new(Vec::new())); let (tx, rx) = channel::<Message>(); let mut data = reg.write().unwrap(); - data.push(tx.clone()); + data.push(tx); drop(data); let queue_tx = Queue::start(Arc::clone(®)); (queue_tx, rx) @@ -165,6 +163,10 @@ mod queues { let initial = Message::new(); let msg = initial.reply(MsgType::NewClientMessage); tx.send(msg).unwrap(); - rx.recv_timeout(TIMEOUT).unwrap(); + let msg = rx.recv_timeout(TIMEOUT).unwrap(); + match msg.class { + MsgType::ClientMessage => assert_ne!(msg.id, initial.id), + _ => unreachable!("should have been a client message"), + } } }