From c9ba80e6a4189b0f72ad6b34684897fc9047b165 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Fri, 8 Apr 2022 11:01:33 +0900 Subject: [PATCH] Impl "too_many_players" response from back-end Previous implementation did not respond with the proper JSON response if there were too many players. --- back_end/src/db_handler.rs | 9 ++++++--- back_end/src/json_handlers.rs | 6 +++++- front_end/src/state.rs | 14 +++++++------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/back_end/src/db_handler.rs b/back_end/src/db_handler.rs index a572404..534239f 100644 --- a/back_end/src/db_handler.rs +++ b/back_end/src/db_handler.rs @@ -19,7 +19,9 @@ use std::{fmt, thread}; use rand::{thread_rng, Rng}; use rusqlite::{params, Connection, Error as RusqliteError}; -pub type GetIDSenderType = (u32, Option); +/// first value is ID, None if too many players +/// second value is true if player is cyan_player, None if not paired yet +pub type GetIDSenderType = (Option, Option); /// first bool is player exists, /// second bool is if paired, /// third bool is if cyan player @@ -172,6 +174,7 @@ impl DBHandler { let create_player_result = self.create_new_player(Some(&conn)); if let Err(e) = create_player_result { println!("{}", e); + player_tx.send((None, None)).ok(); // don't stop server because player limit may have been reached return false; } @@ -193,11 +196,11 @@ impl DBHandler { if paired { // don't stop server on send fail, may have timed // out and dropped the receiver - player_tx.send((player_id, Some(is_cyan))).ok(); + player_tx.send((Some(player_id), Some(is_cyan))).ok(); } else { // don't stop server on send fail, may have timed // out and dropped the receiver - player_tx.send((player_id, None)).ok(); + player_tx.send((Some(player_id), None)).ok(); } } else { println!("Internal error, created player doesn't exist"); diff --git a/back_end/src/json_handlers.rs b/back_end/src/json_handlers.rs index 8984f26..f7249b1 100644 --- a/back_end/src/json_handlers.rs +++ b/back_end/src/json_handlers.rs @@ -41,7 +41,11 @@ fn handle_pairing_request(tx: SyncSender) -> Result Option { if let GameState::NetworkedMultiplayer { - paired, + paired: _, current_side, - current_turn, + current_turn: _, } = *self { current_side @@ -68,9 +68,9 @@ impl GameState { pub fn set_networked_current_side(&mut self, side: Option) { if let GameState::NetworkedMultiplayer { - paired, + paired: _, ref mut current_side, - current_turn, + current_turn: _, } = self { *current_side = side;