1 package org.vamsas.client.picking;
\r
6 class PickEndPoint extends Thread
\r
8 private Socket socket;
\r
10 private BufferedWriter os;
\r
11 private BufferedReader in;
\r
13 private PickManager manager;
\r
15 PickEndPoint(PickManager manager, Socket s)
\r
17 this.manager = manager;
\r
21 boolean openConnection()
\r
25 // Create the socket if it doesn't already exist
\r
27 socket = new Socket(InetAddress.getLocalHost(), PickServer.PORT);
\r
29 rPort = socket.getPort();
\r
30 socket.setKeepAlive(true);
\r
32 // Open the streams for reading/writing
\r
33 os = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
\r
34 in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
\r
36 // Start the thread to listen for incoming messages
\r
37 System.out.println("CLIENT: connection successful to port "
\r
38 + socket.getPort() + " via port " + socket.getLocalPort());
\r
45 System.out.println("CLIENT: connection failed: " + e);
\r
50 void send(String str)
\r
54 System.out.println("CLIENT: send " + str + " to " + rPort);
\r
57 // We use a newline to terminate the message
\r
63 System.out.println("CLIENT: failed to send");
\r
65 // TODO: terminate the connection on a failed send or retry?
\r
70 // void receive() (threaded)
\r
77 String str = in.readLine();
\r
78 System.out.println("CLIENT: recv " + str + " from " + rPort);
\r
80 manager.handleMessage(this, str);
\r
85 // Means the other end of the connection has (probably died) so we need
\r
86 // terminate this endpoint (if this is server side)
\r
87 System.out.println("CLIENT: read failed: " + e);
\r
93 private void terminate()
\r
95 try { socket.close(); }
\r
96 catch (IOException e) {}
\r
98 System.out.println("CLIENT: closing connection to port " + socket.getPort());
\r
99 manager.removeEndPoint(this);
\r