Got a new client message.
This commit is contained in:
		
							
								
								
									
										18
									
								
								src/queue.rs
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								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"),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user