X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fuk%2Fac%2Fvamsas%2Fclient%2Fsimpleclient%2FSimplePickManager.java;h=5f92d37f694a2d09b341091a9bcb5685341aac7a;hb=1315fee530e537e57c6a208a622fa66a46fb915f;hp=7b33f487d70e22f81a1a9ee83985ea11b72dac13;hpb=ae73be36a711c290fb25c4112a8e01d75bc74abe;p=vamsas.git diff --git a/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java b/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java index 7b33f48..5f92d37 100644 --- a/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java +++ b/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java @@ -33,6 +33,10 @@ public class SimplePickManager implements IPickManager { */ private boolean passThru=true; /** + * internal flag - set to true to sleep until passThru is true before passing on a message + */ + private boolean qUEUE=false; + /** * the client apps message handler */ IMessageHandler pickHandler=null; @@ -41,21 +45,26 @@ public class SimplePickManager implements IPickManager { } - public void sendMessage(Message message) { - manager.sendMessage(message); + public synchronized void sendMessage(Message message) { + // throw away messages whilst we block + if (passThru && manager!=null) + manager.sendMessage(message); } /** * pass message onto the Apps handler, or wait until * passThru is true before passing message on. * @param message */ - protected void handleMessage(Message message) { - while (!passThru) { + protected synchronized void handleMessage(Message message) { + if (qUEUE) { + while (!passThru && manager!=null) { + log.debug("Not passing through."); try { Thread.sleep(5); } catch (InterruptedException e) {}; + } } - if (passThru) + if (passThru && manager!=null) pickHandler.handleMessage(message); } @@ -72,9 +81,14 @@ public class SimplePickManager implements IPickManager { public void setPassThru(boolean passThru) { this.passThru = passThru; } - public void haltPickManager() { - // TODO: FIX haltPickManager to cleanly end after SimpleClient.finalize() is called - manager.haltManager(); - + /** + * shutdown the pickmanager and remove all references to it + */ + public void shutdown() { + passThru=false; + manager.registerMessageHandler(null); + SocketManager dying = manager; + manager=null; + dying.shutdown(); } }