From 08b9469e2c71e06fdd70d607f281686746755073 Mon Sep 17 00:00:00 2001 From: Satya Ortiz-Gagne Date: Mon, 10 Jun 2019 10:20:39 -0400 Subject: DAIDE - Added connection_handler and server - Ability to open and close port when DAIDE games are started and stopped - Can get the DAIDE port using a request --- diplomacy/server/request_managers.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'diplomacy/server/request_managers.py') diff --git a/diplomacy/server/request_managers.py b/diplomacy/server/request_managers.py index d17a77b..6819421 100644 --- a/diplomacy/server/request_managers.py +++ b/diplomacy/server/request_managers.py @@ -149,6 +149,7 @@ def on_create_game(server, request, connection_handler): # 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(): @@ -216,6 +217,7 @@ 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): @@ -256,6 +258,21 @@ def on_get_available_maps(server, request, connection_handler): verify_request(server, request, connection_handler) return responses.DataMaps(data=server.available_maps, request_id=request.request_id) +def on_get_daide_port(server, request, connection_handler): + """ Manage request GetDaidePort. + :param server: server which receives the request. + :param request: request to manage. + :param connection_handler: connection handler from which the request was sent. + :return: None + :type server: diplomacy.Server + :type request: diplomacy.communication.requests.GetDaidePort + """ + 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') + return responses.DataPort(data=daide_port, request_id=request.request_id) + def on_get_playable_powers(server, request, connection_handler): """ Manage request GetPlayablePowers. :param server: server which receives the request. @@ -1133,6 +1150,7 @@ MAPPING = { requests.GetDummyWaitingPowers: on_get_dummy_waiting_powers, requests.GetAllPossibleOrders: on_get_all_possible_orders, requests.GetAvailableMaps: on_get_available_maps, + requests.GetDaidePort: on_get_daide_port, requests.GetPlayablePowers: on_get_playable_powers, requests.GetPhaseHistory: on_get_phase_history, requests.JoinGame: on_join_game, -- cgit v1.2.3