\r
import java.io.*;\r
import java.net.*;\r
+import java.util.logging.*;\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("org.vamsas.client.picking");\r
+ \r
+ // The port number we'll listen on\r
static final int PORT = 53782;\r
\r
private ServerSocket serverSocket;\r
+ // Set to true once the server is established\r
+ private boolean isServer = false;\r
+ \r
+ private PickManager manager;\r
\r
- PickServer()\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
{\r
+ this.manager = manager;\r
}\r
\r
+ /**\r
+ * Returns true if this server instance is running.\r
+ * Return true if this server instance is running\r
+ */\r
+ boolean isServer()\r
+ { return isServer; }\r
+ \r
+ /**\r
+ * Attempts to create the server by opening a server socket on the port.\r
+ * @return true if the server was created; false otherwise\r
+ */\r
boolean createServer()\r
{\r
try\r
serverSocket = new ServerSocket(PORT);\r
start(); \r
\r
- return true;\r
+ return isServer = true;\r
}\r
catch (IOException e)\r
{\r
- // If we fail, just assume another app already has the port\r
- System.out.println(e);\r
+ logger.info("SERVER: " + e);\r
return false;\r
}\r
}\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
+ * can make a full client connection for further comms.\r
+ */\r
public void run()\r
{\r
- System.out.println("SERVER: listening...");\r
+ logger.fine("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
{\r
try\r
{\r
- Socket socket = serverSocket.accept();\r
+ Socket socket = serverSocket.accept(); \r
+ logger.fine("SERVER: connection detected");\r
\r
- System.out.println("SERVER: connection made, spawning pipe...");\r
-\r
- // Do something with the socket...\r
- new PickEndPoint(socket);\r
+ manager.addEndPoint(socket);\r
}\r
catch (IOException e) {}\r
}\r