From 80c26a9e4a032d252d819e748d694bd172db62db Mon Sep 17 00:00:00 2001 From: Michael Rausch Date: Thu, 28 Sep 2017 15:00:00 +1300 Subject: [PATCH 1/2] Fixed bug where server could connect to an expired server - Increased update interval Tags: #story[1281] --- src/main/java/seng302/App.java | 1 - .../discoveryServer/DiscoveryServer.java | 2 +- .../discoveryServer/DiscoveryServerClient.java | 2 +- .../discoveryServer/util/ServerListing.java | 2 +- .../visualiser/ClientToServerThread.java | 10 ++++++---- .../java/seng302/visualiser/GameClient.java | 17 +++++++++++++---- .../controllers/ServerListController.java | 4 +++- 7 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index fdfc3ad4..7b53c2cf 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -105,7 +105,6 @@ public class App extends Application { } }, 0, 1200); - try { parseArgs(args); } catch (ParseException e) { diff --git a/src/main/java/seng302/discoveryServer/DiscoveryServer.java b/src/main/java/seng302/discoveryServer/DiscoveryServer.java index 88c531e7..c5707b92 100644 --- a/src/main/java/seng302/discoveryServer/DiscoveryServer.java +++ b/src/main/java/seng302/discoveryServer/DiscoveryServer.java @@ -48,7 +48,7 @@ public class DiscoveryServer { " .:;...'cxxxxxxxxxxxxoc;,::,..cdl;;l' \n" + " .cl;':,'';oxxxxxxdxxxxxx:....,cooc,cO; \n" + " .,,,::;,lxoc:,,:lxxxxxxxxxxxo:,,;lxxl;'oNc \n" + - " .cdxo;':lxxxxxxc'';cccccoxxxxxxxxxxxxo,.;lc. " + ANSI_YELLOW + "Party-Parrots-At-Sea Discovery Server v0.1 " + selectedColor +"\n" + + " .cdxo;':lxxxxxxc'';cccccoxxxxxxxxxxxxo,.;lc. " + ANSI_YELLOW + "Party-Parrots-At-Sea Discovery Server v1.0.0 (Release) " + selectedColor +"\n" + " .loc'.'lxxxxxxxxocc;''''';ccoxxxxxxxxx:..oc \n" + "olc,..',:cccccccccccc:;;;;;;;;:ccccccccc,.'c, \n" + "Ol;......................................;l' "); diff --git a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java index 79df1c2f..80521951 100644 --- a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java +++ b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java @@ -19,7 +19,7 @@ import java.util.Timer; import java.util.TimerTask; public class DiscoveryServerClient { - private final Integer UPDATE_INTERVAL_MS = 5000; + private final Integer UPDATE_INTERVAL_MS = 1000; private static String roomCode = null; private Timer serverListingUpdateTimer; diff --git a/src/main/java/seng302/discoveryServer/util/ServerListing.java b/src/main/java/seng302/discoveryServer/util/ServerListing.java index 4c5bdaad..d477b717 100644 --- a/src/main/java/seng302/discoveryServer/util/ServerListing.java +++ b/src/main/java/seng302/discoveryServer/util/ServerListing.java @@ -1,7 +1,7 @@ package seng302.discoveryServer.util; public class ServerListing { - public final static int SERVER_TTL_DEFAULT = 10; + public final static int SERVER_TTL_DEFAULT = 3; private String serverName = ""; private String mapName = ""; diff --git a/src/main/java/seng302/visualiser/ClientToServerThread.java b/src/main/java/seng302/visualiser/ClientToServerThread.java index d8d52fff..b4840004 100644 --- a/src/main/java/seng302/visualiser/ClientToServerThread.java +++ b/src/main/java/seng302/visualiser/ClientToServerThread.java @@ -180,10 +180,12 @@ public class ClientToServerThread implements Runnable { notifyDisconnectListeners("Connection to server was terminated"); closeSocket(); - Platform.runLater(() -> { - ViewManager.getInstance().showErrorSnackBar("Server rejected connection."); - ViewManager.getInstance().goToStartView(); - }); + //thread.interrupt(); + +// Platform.runLater(() -> { +// ViewManager.getInstance().showErrorSnackBar("Server rejected connection."); +// ViewManager.getInstance().goToStartView(); +// }); } public void sendCustomizationRequest(CustomizeRequestType reqType, byte[] payload) { diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 4d09e60f..63df3d27 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -95,7 +95,7 @@ public class GameClient { * @param ipAddress IP to connect to. * @param portNumber Port to connect to. */ - public void runAsClient(String ipAddress, Integer portNumber) { + public boolean runAsClient(String ipAddress, Integer portNumber) { try { startClientToServerThread(ipAddress, portNumber); socketThread.addDisconnectionListener((cause) -> { @@ -106,12 +106,19 @@ public class GameClient { ViewManager.getInstance().setPlayerList(clientLobbyList); - while (regattaData == null){ + int triesLeft = 10; + + while (regattaData == null && triesLeft >= 0){ try { Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); + } catch (InterruptedException ignored) { + ; } + triesLeft--; + } + + if (triesLeft < 1){ + return false; } ViewManager.getInstance().setProperty("serverName", regattaData.getRegattaName()); @@ -127,6 +134,8 @@ public class GameClient { } catch (IOException ioe) { ViewManager.getInstance().showErrorSnackBar("There are no servers currently available."); } + + return true; } private void destroyClientToServerThread() { diff --git a/src/main/java/seng302/visualiser/controllers/ServerListController.java b/src/main/java/seng302/visualiser/controllers/ServerListController.java index 2e133ceb..77e8bf4d 100644 --- a/src/main/java/seng302/visualiser/controllers/ServerListController.java +++ b/src/main/java/seng302/visualiser/controllers/ServerListController.java @@ -140,7 +140,9 @@ public class ServerListController implements Initializable, ServerListenerDelega return; } - ViewManager.getInstance().getGameClient().runAsClient(listing.getAddress(), listing.getPortNumber()); + if (!ViewManager.getInstance().getGameClient().runAsClient(listing.getAddress(), listing.getPortNumber())){ + ViewManager.getInstance().showErrorSnackBar("Could not connect to server"); + } }); /* From 8810554ce9db48fadcf73270dba4aa597b29d3c8 Mon Sep 17 00:00:00 2001 From: Michael Rausch Date: Thu, 28 Sep 2017 15:16:37 +1300 Subject: [PATCH 2/2] Fixed bug where server wasn't being unregistered from discovery server - Added missing unregister() method call Tags: #story[1281] --- .../java/seng302/discoveryServer/DiscoveryServerClient.java | 2 +- src/main/java/seng302/discoveryServer/util/ServerListing.java | 2 +- src/main/java/seng302/gameServer/ServerAdvertiser.java | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java index 80521951..4454d25c 100644 --- a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java +++ b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java @@ -19,7 +19,7 @@ import java.util.Timer; import java.util.TimerTask; public class DiscoveryServerClient { - private final Integer UPDATE_INTERVAL_MS = 1000; + private final Integer UPDATE_INTERVAL_MS = 700; private static String roomCode = null; private Timer serverListingUpdateTimer; diff --git a/src/main/java/seng302/discoveryServer/util/ServerListing.java b/src/main/java/seng302/discoveryServer/util/ServerListing.java index d477b717..31e7a387 100644 --- a/src/main/java/seng302/discoveryServer/util/ServerListing.java +++ b/src/main/java/seng302/discoveryServer/util/ServerListing.java @@ -1,7 +1,7 @@ package seng302.discoveryServer.util; public class ServerListing { - public final static int SERVER_TTL_DEFAULT = 3; + public final static int SERVER_TTL_DEFAULT = 5; private String serverName = ""; private String mapName = ""; diff --git a/src/main/java/seng302/gameServer/ServerAdvertiser.java b/src/main/java/seng302/gameServer/ServerAdvertiser.java index d0868734..2b363601 100644 --- a/src/main/java/seng302/gameServer/ServerAdvertiser.java +++ b/src/main/java/seng302/gameServer/ServerAdvertiser.java @@ -146,6 +146,8 @@ public class ServerAdvertiser { public void unregister(){ if (serviceInfo != null) jmdnsInstance.unregisterService(serviceInfo); + + repositoryClient.unregister(); } /**