wrapper for conditionally passing picks onto the client application
authorjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 12 Jan 2007 15:26:43 +0000 (15:26 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 12 Jan 2007 15:26:43 +0000 (15:26 +0000)
git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@333 be28352e-c001-0410-b1a7-c7978e42abec

src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java [new file with mode: 0644]

diff --git a/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java b/src/uk/ac/vamsas/client/simpleclient/SimplePickManager.java
new file mode 100644 (file)
index 0000000..7b33f48
--- /dev/null
@@ -0,0 +1,80 @@
+package uk.ac.vamsas.client.simpleclient;\r
+\r
+import org.apache.commons.logging.*;\r
+\r
+import uk.ac.vamsas.client.picking.IMessageHandler;\r
+import uk.ac.vamsas.client.picking.IPickManager;\r
+import uk.ac.vamsas.client.picking.Message;\r
+import uk.ac.vamsas.client.picking.SocketManager;\r
+/**\r
+ * Blocking message handler\r
+ * @author\r
+ *\r
+ */\r
+public class SimplePickManager implements IPickManager {\r
+  private Log log = LogFactory.getLog(SimplePickManager.class);\r
+  \r
+  SocketManager manager=null;\r
+  SimplePickManager(SocketManager manager) {\r
+    this.manager=manager;\r
+    final SimplePickManager me=this;\r
+    /**\r
+     * add a handler that calls the SimplePickManager message handler\r
+     */\r
+    manager.registerMessageHandler(new IMessageHandler() {\r
+      public void handleMessage(Message message) {\r
+        me.handleMessage(message);\r
+      }\r
+    });\r
+    \r
+  }\r
+  /**\r
+   * when false, messages are queued in a FIFO until thread can restart.\r
+   */\r
+  private boolean passThru=true;\r
+  /**\r
+   * the client apps message handler\r
+   */\r
+  IMessageHandler pickHandler=null;\r
+  public void registerMessageHandler(IMessageHandler handler) {\r
+    pickHandler=handler; \r
+    \r
+  }\r
+\r
+  public void sendMessage(Message message) {\r
+    manager.sendMessage(message);\r
+  }\r
+  /**\r
+   * pass message onto the Apps handler, or wait until\r
+   * passThru is true before passing message on.\r
+   * @param message\r
+   */\r
+  protected void handleMessage(Message message) {\r
+    while (!passThru) {\r
+      try {\r
+        Thread.sleep(5);\r
+      } catch (InterruptedException e) {};\r
+    }\r
+    if (passThru)\r
+      pickHandler.handleMessage(message);\r
+  }\r
+\r
+  /**\r
+   * @return true if messages are being passed to handlers\r
+   */\r
+  public boolean isPassThru() {\r
+    return passThru;\r
+  }\r
+\r
+  /**\r
+   * @param true to pass messages on to handlers, false to hold messages in queue\r
+   */\r
+  public void setPassThru(boolean passThru) {\r
+    this.passThru = passThru;\r
+  }\r
+  public void haltPickManager() {\r
+      // TODO: FIX haltPickManager to cleanly end after SimpleClient.finalize() is called\r
+      manager.haltManager();\r
+      \r
+  }\r
+}\r