mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-18 21:59:54 +01:00
Code cleanup, fixed potential NullPointerException if never connected.
This commit is contained in:
@@ -38,7 +38,7 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
|
|||||||
|
|
||||||
private int lineLen = 0;
|
private int lineLen = 0;
|
||||||
|
|
||||||
private volatile ReliabilityLayer reliabilityLayer = null;
|
private volatile ReliabilityLayer reliabilityLayer;
|
||||||
|
|
||||||
ModemImpl(Executor executor, Callback callback, String portName) {
|
ModemImpl(Executor executor, Callback callback, String portName) {
|
||||||
this.executor = executor;
|
this.executor = executor;
|
||||||
@@ -48,6 +48,7 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
|
|||||||
offHook = new Semaphore(1);
|
offHook = new Semaphore(1);
|
||||||
connected = new AtomicBoolean(false);
|
connected = new AtomicBoolean(false);
|
||||||
line = new byte[MAX_LINE_LENGTH];
|
line = new byte[MAX_LINE_LENGTH];
|
||||||
|
reliabilityLayer = new ReliabilityLayer(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() throws IOException {
|
public void init() throws IOException {
|
||||||
@@ -129,6 +130,7 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
|
|||||||
throw new IOException(e.toString());
|
throw new IOException(e.toString());
|
||||||
}
|
}
|
||||||
reliabilityLayer.invalidate();
|
reliabilityLayer.invalidate();
|
||||||
|
reliabilityLayer = new ReliabilityLayer(this);
|
||||||
connected.set(false);
|
connected.set(false);
|
||||||
offHook.release();
|
offHook.release();
|
||||||
}
|
}
|
||||||
@@ -176,7 +178,6 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
|
|||||||
lineLen = 0;
|
lineLen = 0;
|
||||||
if(LOG.isLoggable(INFO)) LOG.info("Modem status: " + s);
|
if(LOG.isLoggable(INFO)) LOG.info("Modem status: " + s);
|
||||||
if(s.startsWith("CONNECT")) {
|
if(s.startsWith("CONNECT")) {
|
||||||
reliabilityLayer = new ReliabilityLayer(this);
|
|
||||||
synchronized(connected) {
|
synchronized(connected) {
|
||||||
if(connected.getAndSet(true))
|
if(connected.getAndSet(true))
|
||||||
throw new IOException("Connected twice");
|
throw new IOException("Connected twice");
|
||||||
|
|||||||
@@ -6,26 +6,21 @@ import java.io.OutputStream;
|
|||||||
|
|
||||||
class ReliabilityLayer implements ReadHandler, WriteHandler {
|
class ReliabilityLayer implements ReadHandler, WriteHandler {
|
||||||
|
|
||||||
// Write side
|
|
||||||
private final WriteHandler writeHandler;
|
private final WriteHandler writeHandler;
|
||||||
private final SlipEncoder encoder;
|
|
||||||
private final Sender sender;
|
|
||||||
private final SenderOutputStream outputStream;
|
|
||||||
// Read side
|
|
||||||
private final SlipDecoder decoder;
|
private final SlipDecoder decoder;
|
||||||
private final Receiver receiver;
|
|
||||||
private final ReceiverInputStream inputStream;
|
private final ReceiverInputStream inputStream;
|
||||||
|
private final SenderOutputStream outputStream;
|
||||||
|
|
||||||
private volatile boolean valid = true;
|
private volatile boolean valid = true;
|
||||||
|
|
||||||
ReliabilityLayer(WriteHandler writeHandler) {
|
ReliabilityLayer(WriteHandler writeHandler) {
|
||||||
this.writeHandler = writeHandler;
|
this.writeHandler = writeHandler;
|
||||||
encoder = new SlipEncoder(this);
|
SlipEncoder encoder = new SlipEncoder(this);
|
||||||
sender = new Sender(encoder);
|
Sender sender = new Sender(encoder);
|
||||||
outputStream = new SenderOutputStream(sender);
|
Receiver 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
InputStream getInputStream() {
|
InputStream getInputStream() {
|
||||||
@@ -40,11 +35,13 @@ class ReliabilityLayer implements ReadHandler, WriteHandler {
|
|||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The modem calls this method to pass data up to the SLIP decoder
|
||||||
public void handleRead(byte[] b, int length) throws IOException {
|
public void handleRead(byte[] b, int length) throws IOException {
|
||||||
if(!valid) throw new IOException("Connection closed");
|
if(!valid) throw new IOException("Connection closed");
|
||||||
decoder.handleRead(b, length);
|
decoder.handleRead(b, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The SLIP encoder calls this method to pass data down to the modem
|
||||||
public void handleWrite(byte[] b, int length) throws IOException {
|
public void handleWrite(byte[] b, int length) throws IOException {
|
||||||
if(!valid) throw new IOException("Connection closed");
|
if(!valid) throw new IOException("Connection closed");
|
||||||
writeHandler.handleWrite(b, length);
|
writeHandler.handleWrite(b, length);
|
||||||
|
|||||||
Reference in New Issue
Block a user