package net.jsunit;
import java.io.*;
import java.net.Socket;
public class ServerSideConnection {
private int port;
private Socket clientSocket;
private PrintWriter writer;
private String host = "localhost";
private boolean isConnected;
private final MessageReceiver receiver;
private BufferedReader reader;
public ServerSideConnection(MessageReceiver receiver, int port) {
this.receiver = receiver;
this.port = port;
}
public void connect() {
for (int i = 1; i < 30; i++) {
try {
clientSocket = new Socket(host, port);
writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"), false);
reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));
isConnected = true;
new ReaderThread().start();
return;
} catch (IOException e1) {
try {
Thread.sleep(250);
} catch (InterruptedException e2) {
}
}
}
throw new RuntimeException("server could not connect");
}
public void shutDown() {
if (writer != null) {
writer.close();
writer = null;
}
try {
if (clientSocket != null) {
clientSocket.close();
clientSocket = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendMessage(String message) {
writer.println(message);
writer.flush();
}
public boolean isConnected() {
return isConnected;
}
class ReaderThread extends Thread {
public void run() {
String message;
try {
while (isConnected && reader != null && (message = reader.readLine()) != null)
receiver.messageReceived(message);
} catch (IOException e) {
}
}
}
}