From 5183c2147d869eb1e31ead5f895f0a71086128e0 Mon Sep 17 00:00:00 2001 From: Ted Morin Date: Wed, 21 May 2014 19:44:05 -0400 Subject: [PATCH] Add auto-restart functionality to server, untested. Passed as boolean arg --- .../ca/uottawa/ui/GenerateTask.java | 3 +-- .../uottawa/ui/ScheduleGeneratorServer.java | 27 ++++++++++++++++++- .../ca/uottawa/ui/ServerConsole.java | 17 ++++++++---- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/schedule-generator/ca/uottawa/ui/GenerateTask.java b/schedule-generator/ca/uottawa/ui/GenerateTask.java index 5a76cb7..46e5b90 100644 --- a/schedule-generator/ca/uottawa/ui/GenerateTask.java +++ b/schedule-generator/ca/uottawa/ui/GenerateTask.java @@ -77,8 +77,7 @@ private void generateSchedules(ScheduleMessage message, ConnectionToClient clien server.printCurrentStats(); } catch (IOException e) { e.printStackTrace(); - server.display("Unable to report back generated schedules. Possible connection lost."); - server.display(client.toString()); + server.display("Unable to report back generated schedules. Possible connection lost to " + client.getInfo("ip")); } } diff --git a/schedule-generator/ca/uottawa/ui/ScheduleGeneratorServer.java b/schedule-generator/ca/uottawa/ui/ScheduleGeneratorServer.java index 9576ce8..77ae573 100644 --- a/schedule-generator/ca/uottawa/ui/ScheduleGeneratorServer.java +++ b/schedule-generator/ca/uottawa/ui/ScheduleGeneratorServer.java @@ -29,11 +29,13 @@ public class ScheduleGeneratorServer extends AbstractServer { private ServerStats runStats = null; private File stats; private int connections = 0; + private boolean autoRestart; - public ScheduleGeneratorServer(int port, ServerConsole serverUI) { + public ScheduleGeneratorServer(int port, ServerConsole serverUI, boolean autoRestart) { super(port); this.serverUI = serverUI; + this.autoRestart = autoRestart; flCourses = new File("../course-download/db_courses.csv"); flSections = new File("../course-download/db_sections.csv"); flActivities = new File("../course-download/db_activities.csv"); @@ -345,6 +347,19 @@ protected void serverStarted() protected void serverStopped() { serverUI.display("Server has stopped listening for connections."); + if (autoRestart) { + serverUI.display("Attempt to restart in 10 seconds."); + try { + Thread.sleep(10000); + listen(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } protected void serverClosed() { @@ -366,4 +381,14 @@ synchronized protected void clientDisconnected(ConnectionToClient client) { synchronized protected void clientException(ConnectionToClient client, Throwable exception) { //serverUI.display(client.getInetAddress() + " has disconnected by exception."); } + + + public boolean isAutoRestart() { + return autoRestart; + } + + + public void setAutoRestart(boolean autoRestart) { + this.autoRestart = autoRestart; + } } diff --git a/schedule-generator/ca/uottawa/ui/ServerConsole.java b/schedule-generator/ca/uottawa/ui/ServerConsole.java index c59661b..d407b5b 100644 --- a/schedule-generator/ca/uottawa/ui/ServerConsole.java +++ b/schedule-generator/ca/uottawa/ui/ServerConsole.java @@ -29,9 +29,9 @@ public class ServerConsole { *k * @param port The port to connect on. */ - public ServerConsole(int port) + public ServerConsole(int port, boolean autoRestart) { - server = new ScheduleGeneratorServer(port, this); + server = new ScheduleGeneratorServer(port, this, autoRestart); try { server.listen(); //Start listening for connections @@ -42,7 +42,6 @@ public ServerConsole(int port) System.out.println("Quitting application"); System.exit(0); } - } @@ -97,7 +96,7 @@ public void display(String message) public static void main(String[] args) { int port = 0; //Port to listen on - + boolean autoRestart = true; try { port = Integer.parseInt(args[0]); //Get port from command line @@ -105,9 +104,17 @@ public static void main(String[] args) catch(Throwable t) { port = DEFAULT_PORT; //Set port to the default + } + try + { + autoRestart = Boolean.parseBoolean(args[1]); //Get port from command line + } + catch(Throwable t) + { + autoRestart = true; } //Create new server console. - ServerConsole server = new ServerConsole(port); + ServerConsole server = new ServerConsole(port, autoRestart); //Start accepting connections on server console. server.accept(); }