Got a new client message.

This commit is contained in:
Jeff Baskin 2025-03-30 16:24:58 -04:00
parent 9bd46f2393
commit 1e8bf33eaf

View File

@ -130,10 +130,11 @@ impl Queue {
fn listen(&mut self) { fn listen(&mut self) {
loop { loop {
let msg = self.rx.recv().unwrap(); let mut msg = self.rx.recv().unwrap();
msg.id = Uuid::max();
let senders = self.registry.read().unwrap(); let senders = self.registry.read().unwrap();
for sender in senders.iter() { 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); static TIMEOUT: Duration = Duration::from_millis(500);
fn start_queue() -> ( fn start_queue() -> (Sender<Message>, Receiver<Message>) {
Sender<Message>,
Receiver<Message>,
) {
let reg: Arc<RwLock<Vec<Sender<Message>>>> = Arc::new(RwLock::new(Vec::new())); let reg: Arc<RwLock<Vec<Sender<Message>>>> = Arc::new(RwLock::new(Vec::new()));
let (tx, rx) = channel::<Message>(); let (tx, rx) = channel::<Message>();
let mut data = reg.write().unwrap(); let mut data = reg.write().unwrap();
data.push(tx.clone()); data.push(tx);
drop(data); drop(data);
let queue_tx = Queue::start(Arc::clone(&reg)); let queue_tx = Queue::start(Arc::clone(&reg));
(queue_tx, rx) (queue_tx, rx)
@ -165,6 +163,10 @@ mod queues {
let initial = Message::new(); let initial = Message::new();
let msg = initial.reply(MsgType::NewClientMessage); let msg = initial.reply(MsgType::NewClientMessage);
tx.send(msg).unwrap(); 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"),
}
} }
} }