From 0049b1dd007d12163b81f081656896e11b20c16c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Thu, 26 Jan 2012 19:35:31 +0100 Subject: Use SameController in MasterApp. --- same/src/main/java/com/orbekk/same/MasterApp.java | 57 ++++++++++++---------- .../java/com/orbekk/same/MasterServiceImpl.java | 21 +++++++- 2 files changed, 52 insertions(+), 26 deletions(-) (limited to 'same') diff --git a/same/src/main/java/com/orbekk/same/MasterApp.java b/same/src/main/java/com/orbekk/same/MasterApp.java index 428336c..286b827 100644 --- a/same/src/main/java/com/orbekk/same/MasterApp.java +++ b/same/src/main/java/com/orbekk/same/MasterApp.java @@ -12,34 +12,41 @@ public class MasterApp { private static final int timeout = 1000; public void run(int port) { - ConnectionManagerImpl connections = new ConnectionManagerImpl(timeout, - timeout); - State state = new State("MasterNetwork"); - Broadcaster broadcaster = - BroadcasterImpl.getDefaultBroadcastRunner(); - MasterServiceImpl master = new MasterServiceImpl(state, connections, - broadcaster); - JsonRpcServer jsonServer = new JsonRpcServer(master, MasterService.class); - server = new Server(port); - RpcHandler rpcHandler = new RpcHandler(master); - rpcHandler.addRpcServer("/MasterService.json", jsonServer); - server.setHandler(rpcHandler); - - Thread masterThread = new Thread(master); - masterThread.start(); - +// ConnectionManagerImpl connections = new ConnectionManagerImpl(timeout, +// timeout); +// State state = new State("MasterNetwork"); +// Broadcaster broadcaster = +// BroadcasterImpl.getDefaultBroadcastRunner(); +// MasterServiceImpl master = new MasterServiceImpl(state, connections, +// broadcaster); +// JsonRpcServer jsonServer = new JsonRpcServer(master, MasterService.class); +// server = new Server(port); +// RpcHandler rpcHandler = new RpcHandler(master); +// rpcHandler.addRpcServer("/MasterService.json", jsonServer); +// server.setHandler(rpcHandler); +// +// Thread masterThread = new Thread(master); +// masterThread.start(); +// +// try { +// server.start(); +// } catch (Exception e) { +// logger.error("Could not start jetty server: {}", e); +// } +// +// try { +// server.join(); +// masterThread.join(); +// } catch (InterruptedException e) { +// logger.info("Received exception. Exiting. {}", e); +// } + SameController controller = SameController.create(port); try { - server.start(); + controller.start(); } catch (Exception e) { - logger.error("Could not start jetty server: {}", e); - } - - try { - server.join(); - masterThread.join(); - } catch (InterruptedException e) { - logger.info("Received exception. Exiting. {}", e); + logger.error("Failed to start Same", e); } + controller.join(); } public static void main(String[] args) { diff --git a/same/src/main/java/com/orbekk/same/MasterServiceImpl.java b/same/src/main/java/com/orbekk/same/MasterServiceImpl.java index dc5eed3..7b441b5 100644 --- a/same/src/main/java/com/orbekk/same/MasterServiceImpl.java +++ b/same/src/main/java/com/orbekk/same/MasterServiceImpl.java @@ -15,6 +15,7 @@ public class MasterServiceImpl implements MasterService, UrlReceiver, Runnable { private boolean stopped = false; private Broadcaster broadcaster; private List _fullStateReceivers = new ArrayList(); + private Thread workerThread = null; public MasterServiceImpl(State initialState, ConnectionManager connections, Broadcaster broadcaster) { @@ -132,10 +133,28 @@ public class MasterServiceImpl implements MasterService, UrlReceiver, Runnable { try { wait(500); } catch (InterruptedException e) { - // Ignore interrupt in wait loop. + stopped = true; } } } + if (Thread.interrupted()) { + stopped = true; + } + } + } + + public void start() { + if (workerThread == null) { + workerThread = new Thread(this); + workerThread.start(); } } + + public void join() throws InterruptedException { + workerThread.join(); + } + + public void interrupt() { + workerThread.interrupt(); + } } -- cgit v1.2.3