diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2020-10-13 17:05:22 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2020-10-13 17:05:22 +0200 |
| commit | 503f6c90395682bf5d7fd3fb8a79bfcfc3c2f329 (patch) | |
| tree | 41dd58465f1afbeb583262eb383fdcb50c256337 /mumd/src/command.rs | |
| parent | cd353c875c3c8bcae4f4ece597468728341362c9 (diff) | |
| download | mum-503f6c90395682bf5d7fd3fb8a79bfcfc3c2f329.tar.gz | |
wait for complete state before sending commands
Diffstat (limited to 'mumd/src/command.rs')
| -rw-r--r-- | mumd/src/command.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mumd/src/command.rs b/mumd/src/command.rs index 322bde8..1f7a781 100644 --- a/mumd/src/command.rs +++ b/mumd/src/command.rs @@ -1,3 +1,9 @@ +use crate::state::State; + +use std::sync::{Arc, Mutex}; +use tokio::sync::mpsc; + +#[derive(Debug)] pub enum Command { ChannelJoin { channel_id: u32, @@ -12,3 +18,16 @@ pub enum Command { ServerDisconnect, Status, } + +pub async fn handle( + state: Arc<Mutex<State>>, + mut command_receiver: mpsc::UnboundedReceiver<Command>, +) { + // wait until we can send packages + let mut initialized_receiver = state.lock().unwrap().initialized_receiver(); + while matches!(initialized_receiver.recv().await, Some(false)) {} + + while let Some(command) = command_receiver.recv().await { + state.lock().unwrap().handle_command(command).await; + } +} |
