From f8ee5f84abc5c9d0d56402f2943abad1dc74d3dd Mon Sep 17 00:00:00 2001 From: notoraptor Date: Thu, 18 Jul 2019 12:19:37 -0400 Subject: Open DAIDE port on game loading and display on web - Open DAIDE port on game loading too, and [web] Display DAIDE port on game title. - [server] Also delete backup game file when deleting game. - [python] Add optional parameter `server` to ServerGame constructor to init server game with a server as soon as it is possible. Add field `daide_port` to Game for client games. When creating game, register it on server before generating client games, so that DAIDE ports are known on client game generation. Move DAIDE port opening into Server.add_new_game() and Server.get_game(), so that port is opened as soon as a new game is added or a game is loaded. Move DAIDE port closing for specific game into Server.delete_game(). Add DAIDE port to client game field daide_port if known. [web] Display DAIDE port if available in game title on game page. - [python] Display game ID in log when opening DAIDE port. - [server] Close DAIDE port as soon as game is done. - Update dependencies. --- diplomacy/server/request_managers.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'diplomacy/server/request_managers.py') diff --git a/diplomacy/server/request_managers.py b/diplomacy/server/request_managers.py index fdc4564..5fa434e 100644 --- a/diplomacy/server/request_managers.py +++ b/diplomacy/server/request_managers.py @@ -132,13 +132,16 @@ def on_create_game(server, request, connection_handler): initial_state=state, n_controls=request.n_controls, deadline=request.deadline, - registration_password=request.registration_password) - server_game.server = server + registration_password=request.registration_password, + server=server) # Make sure game creator will be a game master (set him as moderator if he's not an admin). if not server.users.has_admin(username): server_game.promote_moderator(username) + # Register game on server. + server.add_new_game(server_game) + # Register game creator, as either power player or omniscient observer. if power_name: server_game.control(power_name, username, token) @@ -147,10 +150,6 @@ def on_create_game(server, request, connection_handler): server_game.add_omniscient_token(token) client_game = server_game.as_omniscient_game(username) - # Register game on server. - server.add_new_game(server_game) - server.start_new_daide_server(game_id) - # Start game immediately if possible (e.g. if it's a solitaire game). if server_game.game_can_start(): server.start_game(server_game) @@ -217,7 +216,6 @@ def on_delete_game(server, request, connection_handler): level = verify_request(server, request, connection_handler, observer_role=False, power_role=False) server.delete_game(level.game) server.unschedule_game(level.game) - server.stop_daide_server(level.game.game_id) Notifier(server, ignore_tokens=[request.token]).notify_game_deleted(level.game) def on_get_dummy_waiting_powers(server, request, connection_handler): @@ -270,7 +268,8 @@ def on_get_daide_port(server, request, connection_handler): del connection_handler daide_port = server.get_daide_port(request.game_id) if daide_port is None: - raise exceptions.DaidePortException('Invalid game id or game\'s DAIDE server is not started for that game') + raise exceptions.DaidePortException( + "Invalid game id %s or game's DAIDE server is not started for that game" % request.game_id) return responses.DataPort(data=daide_port, request_id=request.request_id) def on_get_playable_powers(server, request, connection_handler): -- cgit v1.2.3