Removed broken code for flushing the output stream.

This commit is contained in:
akwizgran
2012-12-06 16:56:08 +00:00
parent 0b7ecde4c8
commit 5516503f67
6 changed files with 3 additions and 37 deletions

View File

@@ -33,7 +33,7 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
private final Callback callback;
private final SerialPort port;
private final AtomicBoolean initialised, connected;
private final Semaphore offHook, writing;
private final Semaphore offHook;
private final byte[] line;
private int lineLen = 0;
@@ -46,7 +46,6 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
port = new SerialPort(portName);
initialised = new AtomicBoolean(false);
offHook = new Semaphore(1);
writing = new Semaphore(1);
connected = new AtomicBoolean(false);
line = new byte[MAX_LINE_LENGTH];
reliabilityLayer = new ReliabilityLayer(this);
@@ -152,28 +151,14 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
}
public void handleWrite(byte[] b) throws IOException {
try {
writing.acquire();
} catch(InterruptedException e) {
tryToClose(port);
Thread.currentThread().interrupt();
throw new IOException("Interrupted while waiting to write");
}
try {
port.writeBytes(b);
} catch(SerialPortException e) {
tryToClose(port);
throw new IOException(e.toString());
} finally {
writing.release();
}
}
public void waitForWritesToComplete() throws InterruptedException {
writing.acquire();
writing.release();
}
public void serialEvent(SerialPortEvent ev) {
try {
if(ev.isRXCHAR()) {

View File

@@ -27,6 +27,7 @@ class ReliabilityLayer implements ReadHandler, WriteHandler {
ReliabilityLayer(WriteHandler writeHandler) {
this.writeHandler = writeHandler;
// FIXME: Don't let references to this escape the constructor
SlipEncoder encoder = new SlipEncoder(this);
Sender sender = new Sender(encoder);
receiver = new Receiver(sender);
@@ -90,9 +91,4 @@ class ReliabilityLayer implements ReadHandler, WriteHandler {
if(LOG.isLoggable(INFO)) LOG.info("Queueing " + b.length + " bytes");
if(b.length > 0) writes.add(b);
}
public void waitForWritesToComplete() throws InterruptedException {
if(writer != null) writer.join();
writeHandler.waitForWritesToComplete();
}
}

View File

@@ -204,10 +204,6 @@ class Sender {
writeHandler.handleWrite(d.getBuffer());
}
void waitForWritesToComplete() throws InterruptedException {
writeHandler.waitForWritesToComplete();
}
private static class Outstanding {
private final Data data;

View File

@@ -23,12 +23,7 @@ class SenderOutputStream extends OutputStream {
@Override
public void flush() throws IOException {
if(offset > Data.HEADER_LENGTH) send(false);
try {
sender.waitForWritesToComplete();
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
throw new IOException("Interrupted while flushing output stream");
}
// FIXME: Wait for asynchronous writes to complete
}
@Override

View File

@@ -35,8 +35,4 @@ class SlipEncoder implements WriteHandler {
encoded[encodedLength - 1] = END;
writeHandler.handleWrite(encoded);
}
public void waitForWritesToComplete() throws InterruptedException {
writeHandler.waitForWritesToComplete();
}
}

View File

@@ -5,6 +5,4 @@ import java.io.IOException;
interface WriteHandler {
void handleWrite(byte[] b) throws IOException;
void waitForWritesToComplete() throws InterruptedException;
}