use crate::{ field::Field, queue::{Message, MsgType, Queue}, }; use std::{ sync::mpsc::{channel, Receiver}, thread::spawn, }; const RESPONDS_TO: [MsgType; 1] = [MsgType::DocumentRequest]; struct Document { queue: Queue, rx: Receiver, } impl Document { fn new(queue: Queue, rx: Receiver) -> Self { Self { queue: queue, rx: rx, } } pub fn start(queue: Queue) { let (tx, rx) = channel(); let mut document = Document::new(queue, rx); document.queue.add(tx, RESPONDS_TO.to_vec()); spawn(move || { document.listen(); }); } fn listen(&mut self) { loop { let msg = self.rx.recv().unwrap(); } } } #[cfg(test)] mod documents { use super::*; #[test] fn start_service() { let queue = Queue::new(); Document::start(queue); } }