package VASSAL.tools.ipc;
import java.io.IOException;
import java.io.ObjectOutput;
import java.util.concurrent.BlockingQueue;
import VASSAL.tools.io.IOUtils;
public class IPCMessageDispatcher implements Runnable {
protected final BlockingQueue<IPCMessage> queue;
protected final ObjectOutput out;
public IPCMessageDispatcher(BlockingQueue<IPCMessage> queue,
ObjectOutput out) {
this.queue = queue;
this.out = out;
}
public void run() {
IPCMessage msg;
try {
do {
msg = queue.take();
out.writeObject(msg);
out.flush();
} while (!(msg instanceof Fin));
out.close();
}
catch (IOException e) {
// FIXME
e.printStackTrace();
}
catch (InterruptedException e) {
// FIXME
e.printStackTrace();
}
finally {
IOUtils.closeQuietly(out);
}
}
}