Messages are thrown away when passThru is false (rather than receiver thread sleeping...
authorjprocter <jprocter@compbio.dundee.ac.uk>
Thu, 15 Mar 2007 14:48:20 +0000 (14:48 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Thu, 15 Mar 2007 14:48:20 +0000 (14:48 +0000)
git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@361 be28352e-c001-0410-b1a7-c7978e42abec

src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java

index 376662c..5f92d37 100644 (file)
@@ -33,6 +33,10 @@ public class SimplePickManager implements IPickManager {
    */\r
   private boolean passThru=true;\r
   /**\r
+   * internal flag - set to true to sleep until passThru is true before passing on a message\r
+   */\r
+  private boolean qUEUE=false;\r
+  /**\r
    * the client apps message handler\r
    */\r
   IMessageHandler pickHandler=null;\r
@@ -42,7 +46,9 @@ public class SimplePickManager implements IPickManager {
   }\r
 \r
   public synchronized void sendMessage(Message message) {\r
-    manager.sendMessage(message);\r
+    // throw away messages whilst we block\r
+    if (passThru && manager!=null)\r
+      manager.sendMessage(message);\r
   }\r
   /**\r
    * pass message onto the Apps handler, or wait until\r
@@ -50,12 +56,15 @@ public class SimplePickManager implements IPickManager {
    * @param message\r
    */\r
   protected synchronized void handleMessage(Message message) {\r
-    while (!passThru) {\r
+    if (qUEUE) {\r
+     while (!passThru && manager!=null) {\r
+      log.debug("Not passing through.");\r
       try {\r
         Thread.sleep(5);\r
       } catch (InterruptedException e) {};\r
+    } \r
     }\r
-    if (passThru)\r
+    if (passThru && manager!=null)\r
       pickHandler.handleMessage(message);\r
   }\r
 \r
@@ -72,8 +81,14 @@ public class SimplePickManager implements IPickManager {
   public void setPassThru(boolean passThru) {\r
     this.passThru = passThru;\r
   }\r
-  \r
+  /**\r
+   * shutdown the pickmanager and remove all references to it\r
+   */\r
   public void shutdown() {\r
-       manager.shutdown();\r
+    passThru=false;\r
+    manager.registerMessageHandler(null);\r
+    SocketManager dying = manager;\r
+    manager=null;\r
+       dying.shutdown();\r
   }\r
 }\r