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(&reg));
         (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"),
+        }
     }
 }