use std::sync::mpsc::{Receiver, Sender}; use data::TicketDraft; use store::TicketStore; pub mod data; pub mod store; pub enum Command { Insert(TicketDraft), } // Start the system by spawning the server thread. // It returns a `Sender` instance which can then be used // by one or more clients to interact with the server. pub fn launch() -> Sender { let (sender, receiver) = std::sync::mpsc::channel(); std::thread::spawn(move || server(receiver)); sender } // TODO: The server task should **never** stop. // Enter a loop: wait for a command to show up in // the channel, then execute it, then start waiting // for the next command. pub fn server(receiver: Receiver) { let mut tickStor = TicketStore::new(); 'aLoop: loop { let command = receiver.recv().ok().unwrap(); match command { Command::Insert(a) => { tickStor.add_ticket(a); } } } }