X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fclient%2Fsimpleclient%2FSimplePickManager.java;h=5f92d37f694a2d09b341091a9bcb5685341aac7a;hb=f7f0c666c7183293400a45614a4febb3eb9f23d5;hp=376662c6e978cd691353570ca107a4527ebc31ca;hpb=f900bd84927e08acb2c47527da9cc4efe3a2b968;p=vamsas.git diff --git a/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java b/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java index 376662c..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; @@ -42,7 +46,9 @@ public class SimplePickManager implements IPickManager { } public synchronized void sendMessage(Message message) { - manager.sendMessage(message); + // throw away messages whilst we block + if (passThru && manager!=null) + manager.sendMessage(message); } /** * pass message onto the Apps handler, or wait until @@ -50,12 +56,15 @@ public class SimplePickManager implements IPickManager { * @param message */ protected synchronized void handleMessage(Message message) { - while (!passThru) { + 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,8 +81,14 @@ public class SimplePickManager implements IPickManager { public void setPassThru(boolean passThru) { this.passThru = passThru; } - + /** + * shutdown the pickmanager and remove all references to it + */ public void shutdown() { - manager.shutdown(); + passThru=false; + manager.registerMessageHandler(null); + SocketManager dying = manager; + manager=null; + dying.shutdown(); } }