Finish code sweep
[fanfix.git] / src / jexer / io / TimeoutInputStream.java
index db9eb4a6006897ea1a576c123cea0df0acf23a68..d65426261ed3df9e587b62135d7c55e0cd618197 100644 (file)
@@ -37,6 +37,10 @@ import java.io.InputStream;
  */
 public class TimeoutInputStream extends InputStream {
 
+    // ------------------------------------------------------------------------
+    // Variables --------------------------------------------------------------
+    // ------------------------------------------------------------------------
+
     /**
      * The wrapped stream.
      */
@@ -54,12 +58,9 @@ public class TimeoutInputStream extends InputStream {
      */
     private volatile boolean cancel = false;
 
-    /**
-     * Request that the current read() operation timeout immediately.
-     */
-    public synchronized void cancelRead() {
-        cancel = true;
-    }
+    // ------------------------------------------------------------------------
+    // Constructors -----------------------------------------------------------
+    // ------------------------------------------------------------------------
 
     /**
      * Public constructor, at the default timeout of 10000 millis (10
@@ -93,6 +94,10 @@ public class TimeoutInputStream extends InputStream {
         this.timeoutMillis      = timeoutMillis;
     }
 
+    // ------------------------------------------------------------------------
+    // InputStream ------------------------------------------------------------
+    // ------------------------------------------------------------------------
+
     /**
      * Reads the next byte of data from the input stream.
      *
@@ -209,7 +214,9 @@ public class TimeoutInputStream extends InputStream {
                         "on?");
                 }
                 remaining -= rc;
-                return rc;
+                if (remaining == 0) {
+                    return b.length;
+                }
             }
         }
 
@@ -283,7 +290,10 @@ public class TimeoutInputStream extends InputStream {
                         "available, but read() returned -1.  What is going " +
                         "on?");
                 }
-                return rc;
+                remaining -= rc;
+                if (remaining == 0) {
+                    return len;
+                }
             }
         }
 
@@ -362,4 +372,15 @@ public class TimeoutInputStream extends InputStream {
         return stream.skip(n);
     }
 
+    // ------------------------------------------------------------------------
+    // TimeoutInputStream -----------------------------------------------------
+    // ------------------------------------------------------------------------
+
+    /**
+     * Request that the current read() operation timeout immediately.
+     */
+    public synchronized void cancelRead() {
+        cancel = true;
+    }
+
 }