Mercurial > 510Connectbot
changeset 99:eda03b809f48
move blocking test from socket read to queue take
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Tue, 17 Jun 2014 15:13:41 -0700 |
parents | 16e023784917 |
children | 9204fe526e65 |
files | res/values/version.xml src/org/tn5250j/framework/tn5250/DataStreamProducer.java src/org/tn5250j/framework/tn5250/tnvt.java |
diffstat | 3 files changed, 12 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/res/values/version.xml Tue Jun 17 11:35:01 2014 -0700 +++ b/res/values/version.xml Tue Jun 17 15:13:41 2014 -0700 @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="msg_version" translatable="false">510Connectbot 1.7.2-1 (ab7313512aba+ 2014-05-29)</string> + <string name="msg_version" translatable="false">510Connectbot 1.8.0-1 (16e023784917+ 2014-06-17)</string> </resources>
--- a/src/org/tn5250j/framework/tn5250/DataStreamProducer.java Tue Jun 17 11:35:01 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/DataStreamProducer.java Tue Jun 17 15:13:41 2014 -0700 @@ -14,14 +14,11 @@ import android.util.Log; -import de.mud.terminal.vt320; - public class DataStreamProducer implements Runnable { private static final String TAG = "DataStreamProducer"; private tnvt vt; private BufferedInputStream bin; - private vt320 buffer; private ByteArrayOutputStream baosin; private Thread me; private byte[] saveStream; @@ -34,10 +31,9 @@ - public DataStreamProducer(tnvt vt, BufferedInputStream bin, vt320 buffer, BlockingQueue<Object> queue, byte[] init) { + public DataStreamProducer(tnvt vt, BufferedInputStream bin, BlockingQueue<Object> queue, byte[] init) { this.bin = bin; this.vt = vt; - this.buffer = buffer; baosin = new ByteArrayOutputStream(); dsq = queue; abyte2 = init; @@ -167,7 +163,6 @@ int i = 0; while(!done) { - if (bin.available() == 0) buffer.testChanged(); i = bin.read(); // WVL - LDC : 16/07/2003 : TR.000345 @@ -239,7 +234,6 @@ if (negotiate) { // get the negotiation option - if (bin.available() == 0) buffer.testChanged(); baosin.write(bin.read()); vt.negotiate(rBytes);
--- a/src/org/tn5250j/framework/tn5250/tnvt.java Tue Jun 17 11:35:01 2014 -0700 +++ b/src/org/tn5250j/framework/tn5250/tnvt.java Tue Jun 17 15:13:41 2014 -0700 @@ -77,7 +77,7 @@ import java.util.Properties; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; - +import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLSocket; import android.content.Intent; @@ -140,6 +140,7 @@ private boolean cursorOn = false; private String hostname = ""; private int port = 23; + private vt320 buffer; private boolean connected = false; private boolean support132 = true; private ByteArrayOutputStream baosp = null; @@ -260,6 +261,7 @@ try { this.hostname = hostname; this.port = port; + this.buffer = buffer; try { screen52.getOIA().setInputInhibited(ScreenOIA.INPUTINHIBITED_SYSTEM_WAIT, @@ -298,7 +300,7 @@ } - producer = new DataStreamProducer(this, bin, buffer, dsq, abyte0); + producer = new DataStreamProducer(this, bin, dsq, abyte0); pthread = new Thread(producer); // pthread.setPriority(pthread.MIN_PRIORITY); pthread.setPriority(Thread.NORM_PRIORITY); @@ -986,7 +988,12 @@ while (keepTrucking) { try { - bk.initialize((byte[]) dsq.take()); + Object e = dsq.poll(0L, TimeUnit.SECONDS); + if (e == null) { + buffer.testChanged(); + e = dsq.take(); + }; + bk.initialize((byte[])e); } catch (InterruptedException ie) { Log.w(TAG," vt thread interrupted and stopping "); keepTrucking = false;