]> git.lizzy.rs Git - dragonblocks-rs.git/blob - src/quit.rs
Initial commit
[dragonblocks-rs.git] / src / quit.rs
1 use tokio::sync::{broadcast, mpsc};
2
3 #[derive(Clone)]
4 pub struct Quit {
5     signal: broadcast::Sender<()>,
6
7     #[allow(unused)]
8     confirm: mpsc::Sender<()>,
9 }
10
11 impl Quit {
12     pub fn new() -> (Self, mpsc::Receiver<()>) {
13         let (confirm, confirm_recv) = mpsc::channel(1);
14         let (signal, _) = broadcast::channel(1);
15
16         (Self { confirm, signal }, confirm_recv)
17     }
18
19     pub fn quit(&self) {
20         self.signal.send(()).unwrap();
21     }
22
23     pub fn subscribe(&self) -> broadcast::Receiver<()> {
24         self.signal.subscribe()
25     }
26 }