aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/command.rs
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-10-14 01:48:07 +0200
committerGustav Sörnäs <gustav@sornas.net>2020-10-14 01:48:07 +0200
commit3d8009a0201fba0bdc464fae0797d3bb3bcf69f4 (patch)
treec831804fa1e4e20d1152b4051f276feb67ed0881 /mumd/src/command.rs
parent50f5f273426d805025a9336398862529b6bb9b60 (diff)
downloadmum-3d8009a0201fba0bdc464fae0797d3bb3bcf69f4.tar.gz
wip handle more commands (panics)
Diffstat (limited to 'mumd/src/command.rs')
-rw-r--r--mumd/src/command.rs20
1 files changed, 15 insertions, 5 deletions
diff --git a/mumd/src/command.rs b/mumd/src/command.rs
index 1f7a781..c3b72bf 100644
--- a/mumd/src/command.rs
+++ b/mumd/src/command.rs
@@ -1,5 +1,6 @@
-use crate::state::State;
+use crate::state::{Channel, Server, State};
+use std::collections::HashMap;
use std::sync::{Arc, Mutex};
use tokio::sync::mpsc;
@@ -19,14 +20,23 @@ pub enum Command {
Status,
}
+#[derive(Debug)]
+pub enum CommandResponse {
+ ChannelList {
+ channels: HashMap<u32, Channel>,
+ },
+ Status {
+ username: String,
+ server_state: Server,
+ }
+}
+
pub async fn handle(
state: Arc<Mutex<State>>,
mut command_receiver: mpsc::UnboundedReceiver<Command>,
+ command_response_sender: mpsc::UnboundedSender<Result<Option<CommandResponse>, ()>>,
) {
- // wait until we can send packages
- let mut initialized_receiver = state.lock().unwrap().initialized_receiver();
- while matches!(initialized_receiver.recv().await, Some(false)) {}
-
+ //TODO err if not connected
while let Some(command) = command_receiver.recv().await {
state.lock().unwrap().handle_command(command).await;
}