diff options
Diffstat (limited to 'same/src/main/java/com/orbekk/same/MasterServiceImpl.java')
-rw-r--r-- | same/src/main/java/com/orbekk/same/MasterServiceImpl.java | 21 |
1 files changed, 20 insertions, 1 deletions
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<String> _fullStateReceivers = new ArrayList<String>(); + 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(); + } } |