Don't let references to this escape the constructor.

This commit is contained in:
akwizgran
2012-12-06 16:57:31 +00:00
parent 5516503f67
commit 7759c10d23

View File

@@ -16,28 +16,27 @@ class ReliabilityLayer implements ReadHandler, WriteHandler {
Logger.getLogger(ReliabilityLayer.class.getName()); Logger.getLogger(ReliabilityLayer.class.getName());
private final WriteHandler writeHandler; private final WriteHandler writeHandler;
private final Receiver receiver;
private final SlipDecoder decoder;
private final ReceiverInputStream inputStream;
private final SenderOutputStream outputStream;
private final BlockingQueue<byte[]> writes; private final BlockingQueue<byte[]> writes;
private volatile boolean valid = true; private volatile Receiver receiver = null;
private volatile SlipDecoder decoder = null;
private volatile ReceiverInputStream inputStream = null;
private volatile SenderOutputStream outputStream = null;
private volatile Thread writer = null; private volatile Thread writer = null;
private volatile boolean valid = true;
ReliabilityLayer(WriteHandler writeHandler) { ReliabilityLayer(WriteHandler writeHandler) {
this.writeHandler = writeHandler; this.writeHandler = writeHandler;
// FIXME: Don't let references to this escape the constructor writes = new LinkedBlockingQueue<byte[]>();
}
void init() {
SlipEncoder encoder = new SlipEncoder(this); SlipEncoder encoder = new SlipEncoder(this);
Sender sender = new Sender(encoder); Sender sender = new Sender(encoder);
receiver = new Receiver(sender); receiver = new Receiver(sender);
decoder = new SlipDecoder(receiver); decoder = new SlipDecoder(receiver);
inputStream = new ReceiverInputStream(receiver); inputStream = new ReceiverInputStream(receiver);
outputStream = new SenderOutputStream(sender); outputStream = new SenderOutputStream(sender);
writes = new LinkedBlockingQueue<byte[]>();
}
void init() {
writer = new Thread("ReliabilityLayer") { writer = new Thread("ReliabilityLayer") {
@Override @Override
public void run() { public void run() {