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;