From 347bfd50be6702b314483c8201283bfd5e6575d7 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 9 Jan 2012 14:54:36 +0000 Subject: [PATCH] Adding shutdown mode to make it easier to restart server. --- .../com/gempukku/lotro/hall/HallServer.java | 20 +++++++++++++++++++ .../gempukku/lotro/server/AdminResource.java | 12 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java index ecd032b3b..7c9539c9f 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java @@ -30,6 +30,8 @@ public class HallServer extends AbstractServer { private String _motd; + private boolean _shutdown; + private Map _supportedFormats = new LinkedHashMap(); @@ -65,6 +67,12 @@ public class HallServer extends AbstractServer { addFormat("expanded", new ExpandedFormat(library)); } + public void setShutdown(boolean shutdown) { + _shutdown = shutdown; + if (shutdown) + cancelWaitingTables(); + } + public String getMOTD() { return _motd; } @@ -89,10 +97,22 @@ public class HallServer extends AbstractServer { return _leagueService.getActiveLeagues(); } + private void cancelWaitingTables() { + _hallDataAccessLock.writeLock().lock(); + try { + _awaitingTables.clear(); + } finally { + _hallDataAccessLock.writeLock().unlock(); + } + } + /** * @return If table created, otherwise false (if the user already is sitting at a table or playing). */ public void createNewTable(String type, Player player, String deckName) throws HallException { + if (_shutdown) + throw new HallException("Server is in shutdown mode. Server will be restarted after all running games are finished."); + _hallDataAccessLock.writeLock().lock(); try { League league = null; diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java index 9222e8fcf..4845a2038 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java @@ -50,6 +50,18 @@ public class AdminResource extends AbstractResource { return "OK"; } + @Path("/shutdown") + @GET + public String shutdown( + @QueryParam("shutdown") boolean shutdown, + @Context HttpServletRequest request) throws Exception { + validateAdmin(request); + + _hallServer.setShutdown(shutdown); + + return "OK"; + } + @Path("/setMotd") @POST public String setMotd(