aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/network
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-10-18 02:08:32 +0200
committerGustav Sörnäs <gustav@sornas.net>2020-10-21 01:07:43 +0200
commit9f4c05059f1990a23995e3363f88ab753187042d (patch)
tree07c7e7f76cac4b0c7960e3e23913724b1557b4d4 /mumd/src/network
parentd58c2aad6844789c24b93387f9b61e4ab8d2a2d3 (diff)
downloadmum-9f4c05059f1990a23995e3363f88ab753187042d.tar.gz
parse user state diff and handle connecting clients
Diffstat (limited to 'mumd/src/network')
-rw-r--r--mumd/src/network/tcp.rs17
1 files changed, 6 insertions, 11 deletions
diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs
index 88d2b59..c4804f8 100644
--- a/mumd/src/network/tcp.rs
+++ b/mumd/src/network/tcp.rs
@@ -285,23 +285,18 @@ async fn listen(
ControlPacket::UserState(msg) => {
let mut state = state.lock().unwrap();
let session = msg.get_session();
- if *state.phase_receiver().borrow() == StatePhase::Connecting {
- state.audio_mut().add_client(msg.get_session());
- state.parse_initial_user_state(*msg);
- } else {
- state.server_mut().unwrap().parse_user_state(*msg);
- }
+
+ let user_state_diff = state.parse_user_state(*msg);
+ //TODO do something with user state diff
+ debug!("user state diff: {:#?}", &user_state_diff);
+
let server = state.server_mut().unwrap();
let user = server.users().get(&session).unwrap();
info!("User {} connected to {}", user.name(), user.channel());
}
ControlPacket::UserRemove(msg) => {
info!("User {} left", msg.get_session());
- state
- .lock()
- .unwrap()
- .audio_mut()
- .remove_client(msg.get_session());
+ state.lock().unwrap().remove_client(msg.get_session());
}
ControlPacket::ChannelState(msg) => {
debug!("Channel state received");