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
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
*/\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
}\r
catch (IOException e) {}\r
}\r
+ running=false;\r
+ manager.haltManager();\r
+ \r
}\r
}
\ No newline at end of file