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, - Receiver, - ) { + fn start_queue() -> (Sender, Receiver) { let reg: Arc>>> = Arc::new(RwLock::new(Vec::new())); let (tx, rx) = channel::(); 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"), + } } }