complete threads till 06
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
use data::{Ticket, TicketDraft};
|
||||
use std::sync::mpsc::{Receiver, Sender};
|
||||
use store::TicketId;
|
||||
|
||||
use crate::store::TicketStore;
|
||||
|
||||
pub mod data;
|
||||
@@ -6,8 +9,14 @@ pub mod store;
|
||||
|
||||
// Refer to the tests to understand the expected schema.
|
||||
pub enum Command {
|
||||
Insert { todo!() },
|
||||
Get { todo!() }
|
||||
Insert {
|
||||
draft: TicketDraft,
|
||||
response_sender: Sender<TicketId>,
|
||||
},
|
||||
Get {
|
||||
id: TicketId,
|
||||
response_sender: Sender<Option<Ticket>>,
|
||||
},
|
||||
}
|
||||
|
||||
pub fn launch() -> Sender<Command> {
|
||||
@@ -21,19 +30,25 @@ pub fn server(receiver: Receiver<Command>) {
|
||||
let mut store = TicketStore::new();
|
||||
loop {
|
||||
match receiver.recv() {
|
||||
Ok(Command::Insert {}) => {
|
||||
todo!()
|
||||
Ok(Command::Insert {
|
||||
draft,
|
||||
response_sender,
|
||||
}) => {
|
||||
let id = store.add_ticket(draft);
|
||||
response_sender.send(id);
|
||||
}
|
||||
Ok(Command::Get {
|
||||
todo!()
|
||||
id,
|
||||
response_sender,
|
||||
}) => {
|
||||
todo!()
|
||||
let tick = store.get(id);
|
||||
response_sender.send(tick.cloned());
|
||||
}
|
||||
Err(_) => {
|
||||
// There are no more senders, so we can safely break
|
||||
// and shut down the server.
|
||||
break
|
||||
},
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user