+++ /dev/null
-package org.vamsas.client.picking;\r
-\r
-import java.io.*;\r
-import java.net.*;\r
-\r
-class PickEndPoint extends Thread\r
-{\r
- private Socket socket;\r
- private int rPort;\r
- private BufferedWriter os;\r
- private BufferedReader in;\r
-\r
- private PickManager manager; \r
- \r
- PickEndPoint(PickManager manager, Socket s)\r
- {\r
- this.manager = manager;\r
- socket = s;\r
- }\r
- \r
- boolean openConnection()\r
- {\r
- try\r
- {\r
- // Create the socket if it doesn't already exist\r
- if (socket == null)\r
- socket = new Socket(InetAddress.getLocalHost(), PickServer.PORT);\r
- \r
- rPort = socket.getPort();\r
- socket.setKeepAlive(true);\r
- \r
- // Open the streams for reading/writing\r
- os = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));\r
- in = new BufferedReader(new InputStreamReader(socket.getInputStream()));\r
- \r
- // Start the thread to listen for incoming messages\r
- System.out.println("CLIENT: connection successful to port "\r
- + socket.getPort() + " via port " + socket.getLocalPort());\r
- start();\r
- \r
- return true;\r
- }\r
- catch (Exception e)\r
- {\r
- System.out.println("CLIENT: connection failed: " + e);\r
- return false;\r
- }\r
- }\r
- \r
- void send(String str)\r
- {\r
- try\r
- {\r
- System.out.println("CLIENT: send " + str + " to " + rPort);\r
- os.write(str);\r
- \r
- // We use a newline to terminate the message\r
- os.newLine();\r
- os.flush();\r
- }\r
- catch (Exception e)\r
- {\r
- System.out.println("CLIENT: failed to send");\r
- \r
- // TODO: terminate the connection on a failed send or retry?\r
- terminate();\r
- }\r
- }\r
- \r
- // void receive() (threaded)\r
- public void run()\r
- {\r
- try\r
- {\r
- while (true)\r
- {\r
- String str = in.readLine(); \r
- System.out.println("CLIENT: recv " + str + " from " + rPort);\r
- \r
- manager.handleMessage(this, str);\r
- }\r
- }\r
- catch (Exception e)\r
- {\r
- // Means the other end of the connection has (probably died) so we need\r
- // terminate this endpoint (if this is server side)\r
- System.out.println("CLIENT: read failed: " + e);\r
- \r
- terminate();\r
- }\r
- }\r
- \r
- private void terminate()\r
- {\r
- try { socket.close(); }\r
- catch (IOException e) {}\r
- \r
- System.out.println("CLIENT: closing connection to port " + socket.getPort());\r
- manager.removeEndPoint(this);\r
- }\r
-}
\ No newline at end of file