added (broken) haltPickManager methods
[vamsas.git] / src / uk / ac / vamsas / client / picking / PickServer.java
index 2590613..ab2aaf8 100644 (file)
@@ -4,12 +4,14 @@ import java.io.*;
 import java.net.*;\r
 import java.util.logging.*;\r
 \r
+import org.apache.commons.logging.Log;\r
+\r
 /**\r
  * Server class that listens for incoming connections on a predefined port.\r
  */\r
 class PickServer extends Thread\r
 {\r
-       private Logger logger = Logger.getLogger("uk.ac.vamsas.client.picking");\r
+       private Log logger = org.apache.commons.logging.LogFactory.getLog(uk.ac.vamsas.client.picking.PickServer.class);\r
        \r
        // The port number we'll listen on\r
        static final int PORT = 53782;\r
@@ -55,7 +57,35 @@ class PickServer extends Thread
                        return false;\r
                }\r
        }\r
-       \r
+  /**\r
+   * state of server thread - running or not running\r
+   */\r
+       private boolean running=false;\r
+  /**\r
+   * condition for server thread to stop\r
+   */\r
+  private boolean enabled=true;\r
+  public void haltServer() {\r
+  // TODO: FIX THIS METHOD\r
+    if (!running || !enabled) {\r
+      logger.debug("PickServer is not running or already requested to halt.");\r
+      return;\r
+    }\r
+    logger.debug("Disabling pick server.");\r
+    enabled=false;\r
+    while (running) {\r
+      try {\r
+        serverSocket.close();\r
+      } catch (Exception e) {\r
+        \r
+      }\r
+      try {\r
+        Thread.sleep(5);\r
+      } catch (Exception e) {\r
+      }\r
+    }\r
+    logger.debug("Pick server has stopped.");\r
+  }\r
        /**\r
         * Thread listening method - loops indefinitely listening for connections.\r
         * When one is received, the socket object is passed to the manager so it\r
@@ -63,12 +93,13 @@ class PickServer extends Thread
         */\r
        public void run()\r
        {\r
+    enabled=true;\r
+    running=true;\r
                //logger.info("SERVER: listening on " + PORT + " - SERVER");\r
                \r
                // Loop forever, accepting connectons from other clients\r
-               // TODO: add in the ability to terminate the server if a VAMSAS session\r
-               // is ended\r
-               while (true)\r
+               // TODO: terminate the server when haltServer is called (fails tests currently) \r
+    while (enabled)\r
                {\r
                        try\r
                        {\r
@@ -79,5 +110,8 @@ class PickServer extends Thread
                        }\r
                        catch (IOException e) {}\r
                }\r
+    running=false;\r
+    manager.haltManager();\r
+    \r
        }\r
 }
\ No newline at end of file