Got a new client message.
This commit is contained in:
parent
9bd46f2393
commit
1e8bf33eaf
18
src/queue.rs
18
src/queue.rs
@ -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(®));
|
let queue_tx = Queue::start(Arc::clone(®));
|
||||||
(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"),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user