package com.traxel.lumbermill.event;
import com.traxel.lumbermill.log.Log;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.net.SocketException;
private final Socket SOCKET;
private final ObjectInputStream STREAM;
private final String HOST;
private final int PORT;
private boolean _stopRequested = false;
public EventListenerClient(
final Log sink,
final String host,
final int port)
throws IOException {
super(sink);
final InputStream rawStream;
PORT = port;
HOST = host;
SOCKET = new Socket(HOST, PORT);
rawStream = SOCKET.getInputStream();
STREAM = new ObjectInputStream(rawStream);
start();
}
@Override
if (STREAM != null) {
Event event;
while (!_stopRequested) {
event = null;
try {
event = Event.create(readObject());
} catch (SocketException e) {
if (!_stopRequested) {
e.printStackTrace();
close();
}
}
if (event != null) {
add(event);
}
}
}
}
@Override
public void finalize()
throws Throwable {
close();
super.finalize();
}
@Override
pleaseStop();
if (SOCKET != null) {
try {
SOCKET.close();
} catch (Exception e) {
}
}
firePropertyChange(STATUS_PROPERTY,
null,
getStatus());
}
@Override
return "Client";
}
@Override
return String.valueOf(PORT);
}
@Override
return HOST;
}
@Override
if (SOCKET.isBound() && !SOCKET.isClosed()) {
return ("Connected");
} else {
return ("Disconnected");
}
}
private Object
readObject()
throws SocketException {
Object o = null;
try {
o = STREAM.readObject();
} catch (EOFException e) {
close();
} catch (SocketException e) {
throw e;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return o;
}
_stopRequested = true;
}
}