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 static 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
private ServerSocket serverSocket;\r
// Set to true once the server is established\r
private boolean isServer = false;\r
- \r
- private PickManager manager;\r
+ // Set to false when server is shutting down\r
+ private boolean isAlive= true;\r
+ private SocketManager manager;\r
\r
/**\r
* Constructs a new instance of the server (but doesn't start it).\r
* @param manager a reference to the pick manager that owns this server\r
*/\r
- PickServer(PickManager manager)\r
+ PickServer(SocketManager manager)\r
{\r
this.manager = manager;\r
}\r
}\r
catch (IOException e)\r
{\r
- logger.info("SERVER: " + e);\r
+ logger.debug("SERVER: " + e);\r
return false;\r
}\r
}\r
*/\r
public void run()\r
{\r
- logger.fine("SERVER: listening on " + PORT + " - SERVER");\r
+ logger.debug("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
+ while (isAlive)\r
{\r
try\r
{\r
Socket socket = serverSocket.accept(); \r
- logger.fine("SERVER: connection detected");\r
- \r
- manager.addEndPoint(socket);\r
+ logger.info("SERVER: connection detected");\r
+ if (isAlive)\r
+ manager.addEndPoint(socket);\r
}\r
catch (IOException e) {}\r
}\r
}\r
+ \r
+ void terminate()\r
+ {\r
+ logger.debug("Server shutting down...");\r
+ isAlive=false;\r
+ try { serverSocket.close(); }\r
+ catch (Exception e)\r
+ {\r
+ logger.error(e);\r
+ }\r
+ logger.debug("Server shut down complete.");\r
+ }\r
}
\ No newline at end of file