package network;
import java.io.*;
import java.net.*;
import main.ui.NodeConsole;
import util.Log;
public class RemoteListener extends Thread {
//Handle to the on screen pulse display
NodeConsole remoteListenerConsole = null;
private int socket;
private boolean closeDown = false;
public RemoteListener(int socketNumber) {
socket = socketNumber;
remoteListenerConsole = new NodeConsole();
}
public void run() {
remoteListenerConsole.start("Requests in","Listens for Requests from other nodes\n");
accept();
}
public void accept() {
ServerSocket serverSocket = null;
PrintWriter out = null;
BufferedReader in;
MessageConvertor messageConvert = new MessageConvertor();
Socket clientSocket = null;
MessageProcessor processor = new MessageProcessor();
try {
serverSocket = new ServerSocket(socket);
while (!closeDown) {
// Yield to other threads - make app more responsive
Thread.yield();
clientSocket = serverSocket.accept();
out = new PrintWriter(clientSocket.getOutputStream(), true);
// new line
Message inMessage = messageConvert
.deserialiseMessage(new ObjectInputStream(clientSocket
.getInputStream()));
remoteListenerConsole.log("Command:" + inMessage.getCommand());
remoteListenerConsole.log("FileContents:"
+ inMessage.getFileContents());
processor.process(inMessage,remoteListenerConsole);
}
remoteListenerConsole.log("Listener shutting down");
out.close();
// in.close();
clientSocket.close();
serverSocket.close();
// Start dealing with message / file
} catch (Exception e) {
e.printStackTrace();
System.out.println("Could not listen on port: " + socket);
System.exit(-1);
}
}
public boolean isCloseDown() {
return closeDown;
}
public void setCloseDown(boolean closeDown) {
this.closeDown = closeDown;
}
}