Real user disconnection management

This commit is contained in:
Artlef 2020-03-01 19:30:26 +01:00
parent 0a2aba9619
commit bf32298884

View File

@ -54,7 +54,7 @@ fn handle_player(mut stream: UnixStream, server: Server) {
Ok((player, player_turn)) => main_loop(&mut stream, &server, player, player_turn), Ok((player, player_turn)) => main_loop(&mut stream, &server, player, player_turn),
Err(e) => println!("User id {} could not be initialized: {}", server.id, e), Err(e) => println!("User id {} could not be initialized: {}", server.id, e),
}; };
player_disconnected(); player_disconnected(&server);
} }
fn initialize_client( fn initialize_client(
@ -197,9 +197,7 @@ fn receive_user_role(
if available_roles_after_choice.contains(&chosen_role) { if available_roles_after_choice.contains(&chosen_role) {
println!("OK"); println!("OK");
clichess::write_to_stream(stream, String::from("OK")).unwrap(); clichess::write_to_stream(stream, String::from("OK")).unwrap();
clichess::read_line_from_stream(stream).expect("Player closed connection.");
let get_confirmation =
clichess::read_line_from_stream(stream).expect("Player closed connection.");
break; break;
} else { } else {
println!("KO"); println!("KO");
@ -227,6 +225,8 @@ fn compute_available_roles_to_str(server: &Server) -> String {
available_roles_str.join(",") available_roles_str.join(",")
} }
fn player_disconnected() { fn player_disconnected(server: &Server) {
let mut players = server.players.lock().unwrap();
players.remove(&server.id);
println!("Player disconnected."); println!("Player disconnected.");
} }