Add 'src/jexer/' from commit 'cf01c92f5809a0732409e280fb0f32f27393618d'
[fanfix.git] / src / jexer / net / TelnetOutputStream.java
index 3520a591f63e4dbc3e19988ac038eddd59eed425..6e7536a847f3bcb5e9a68b2c90f38026f2ed2694 100644 (file)
@@ -3,7 +3,7 @@
  *
  * The MIT License (MIT)
  *
- * Copyright (C) 2017 Kevin Lamonte
+ * Copyright (C) 2019 Kevin Lamonte
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -36,7 +36,11 @@ import static jexer.net.TelnetSocket.*;
 /**
  * TelnetOutputStream works with TelnetSocket to perform the telnet protocol.
  */
-public final class TelnetOutputStream extends OutputStream {
+public class TelnetOutputStream extends OutputStream {
+
+    // ------------------------------------------------------------------------
+    // Variables --------------------------------------------------------------
+    // ------------------------------------------------------------------------
 
     /**
      * The root TelnetSocket that has my telnet protocol state.
@@ -48,6 +52,15 @@ public final class TelnetOutputStream extends OutputStream {
      */
     private OutputStream output;
 
+    /**
+     * When true, the last byte the caller passed to write() was a CR.
+     */
+    private boolean writeCR = false;
+
+    // ------------------------------------------------------------------------
+    // Constructors -----------------------------------------------------------
+    // ------------------------------------------------------------------------
+
     /**
      * Package private constructor.
      *
@@ -59,7 +72,9 @@ public final class TelnetOutputStream extends OutputStream {
         this.output = output;
     }
 
-    // OutputStream interface -------------------------------------------------
+    // ------------------------------------------------------------------------
+    // OutputStrem ------------------------------------------------------------
+    // ------------------------------------------------------------------------
 
     /**
      * Closes this output stream and releases any system resources associated
@@ -131,10 +146,14 @@ public final class TelnetOutputStream extends OutputStream {
     @Override
     public void write(final int b) throws IOException {
         byte [] bytes = new byte[1];
-        bytes[0] = (byte)b;
+        bytes[0] = (byte) b;
         writeImpl(bytes, 0, 1);
     }
 
+    // ------------------------------------------------------------------------
+    // TelnetOutputStrem ------------------------------------------------------
+    // ------------------------------------------------------------------------
+
     /**
      * Writes b.length bytes from the specified byte array to this output
      * stream.  Note package private access.
@@ -146,13 +165,6 @@ public final class TelnetOutputStream extends OutputStream {
         output.write(b, 0, b.length);
     }
 
-    // Telnet protocol --------------------------------------------------------
-
-    /**
-     * When true, the last byte the caller passed to write() was a CR.
-     */
-    private boolean writeCR = false;
-
     /**
      * Writes len bytes from the specified byte array starting at offset off
      * to this output stream.
@@ -184,8 +196,8 @@ public final class TelnetOutputStream extends OutputStream {
 
                 if (ch == TELNET_IAC) {
                     // IAC -> IAC IAC
-                    writeBuffer[writeBufferI++] = (byte)TELNET_IAC;
-                    writeBuffer[writeBufferI++] = (byte)TELNET_IAC;
+                    writeBuffer[writeBufferI++] = (byte) TELNET_IAC;
+                    writeBuffer[writeBufferI++] = (byte) TELNET_IAC;
                 } else {
                     // Anything else -> just send
                     writeBuffer[writeBufferI++] = ch;
@@ -201,15 +213,15 @@ public final class TelnetOutputStream extends OutputStream {
                 if (writeCR == true) {
                     // Flush the previous CR to the stream.
                     // CR <anything> -> CR NULL
-                    writeBuffer[writeBufferI++] = (byte)C_CR;
-                    writeBuffer[writeBufferI++] = (byte)C_NUL;
+                    writeBuffer[writeBufferI++] = (byte) C_CR;
+                    writeBuffer[writeBufferI++] = (byte) C_NUL;
                 }
                 writeCR = true;
             } else if (ch == C_LF) {
                 if (writeCR == true) {
                     // CR LF -> CR LF
-                    writeBuffer[writeBufferI++] = (byte)C_CR;
-                    writeBuffer[writeBufferI++] = (byte)C_LF;
+                    writeBuffer[writeBufferI++] = (byte) C_CR;
+                    writeBuffer[writeBufferI++] = (byte) C_LF;
                     writeCR = false;
                 } else {
                     // Bare LF -> LF
@@ -218,18 +230,18 @@ public final class TelnetOutputStream extends OutputStream {
             } else if (ch == TELNET_IAC) {
                 if (writeCR == true) {
                     // CR <anything> -> CR NULL
-                    writeBuffer[writeBufferI++] = (byte)C_CR;
-                    writeBuffer[writeBufferI++] = (byte)C_NUL;
+                    writeBuffer[writeBufferI++] = (byte) C_CR;
+                    writeBuffer[writeBufferI++] = (byte) C_NUL;
                     writeCR = false;
                 }
                 // IAC -> IAC IAC
-                writeBuffer[writeBufferI++] = (byte)TELNET_IAC;
-                writeBuffer[writeBufferI++] = (byte)TELNET_IAC;
+                writeBuffer[writeBufferI++] = (byte) TELNET_IAC;
+                writeBuffer[writeBufferI++] = (byte) TELNET_IAC;
             } else {
                 if (writeCR == true) {
                     // CR <anything> -> CR NULL
-                    writeBuffer[writeBufferI++] = (byte)C_CR;
-                    writeBuffer[writeBufferI++] = (byte)C_NUL;
+                    writeBuffer[writeBufferI++] = (byte) C_CR;
+                    writeBuffer[writeBufferI++] = (byte) C_NUL;
                     writeCR = false;
                 } else {
                     // Normal character */