X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fnet%2FTelnetSocket.java;h=ac8a2782b0ed672e2166026ffe46439a4bc2681b;hb=edcd53bbbba9f94e21f43fd03d3a2febcc2b1564;hp=a1a35f72396aa526943d7c9a2f8381247d0214b9;hpb=09944e92061620009b2b3c6923dfcae7338e6661;p=nikiroo-utils.git diff --git a/src/jexer/net/TelnetSocket.java b/src/jexer/net/TelnetSocket.java deleted file mode 100644 index a1a35f7..0000000 --- a/src/jexer/net/TelnetSocket.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Jexer - Java Text User Interface - * - * The MIT License (MIT) - * - * Copyright (C) 2016 Kevin Lamonte - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * @author Kevin Lamonte [kevin.lamonte@gmail.com] - * @version 1 - */ -package jexer.net; - -import java.io.InputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.net.Socket; - -/** - * This class provides a Socket that performs the telnet protocol to both - * establish an 8-bit clean no echo channel and expose window resize events - * to the Jexer ECMA48 backend. - */ -public final class TelnetSocket extends Socket { - - /** - * The telnet-aware socket InputStream. - */ - private TelnetInputStream input; - - /** - * The telnet-aware socket OutputStream. - */ - private TelnetOutputStream output; - - // Telnet protocol special characters. Note package private access. - static final int TELNET_SE = 240; - static final int TELNET_NOP = 241; - static final int TELNET_DM = 242; - static final int TELNET_BRK = 243; - static final int TELNET_IP = 244; - static final int TELNET_AO = 245; - static final int TELNET_AYT = 246; - static final int TELNET_EC = 247; - static final int TELNET_EL = 248; - static final int TELNET_GA = 249; - static final int TELNET_SB = 250; - static final int TELNET_WILL = 251; - static final int TELNET_WONT = 252; - static final int TELNET_DO = 253; - static final int TELNET_DONT = 254; - static final int TELNET_IAC = 255; - static final int C_NUL = 0x00; - static final int C_LF = 0x0A; - static final int C_CR = 0x0D; - - /** - * If true, this is a server socket (i.e. created by accept()). - */ - boolean isServer = true; - - /** - * If true, telnet ECHO mode is set such that local echo is off and - * remote echo is on. This is appropriate for server sockets. - */ - boolean echoMode = false; - - /** - * If true, telnet BINARY mode is enabled. We always want this to - * ensure a Unicode-safe stream. - */ - boolean binaryMode = false; - - /** - * If true, the SUPPRESS-GO-AHEAD option is enabled. We always want - * this. - */ - boolean goAhead = true; - - /** - * If true, request the client terminal type. - */ - boolean doTermType = true; - - /** - * If true, request the client terminal speed. - */ - boolean doTermSpeed = true; - - /** - * If true, request the Negotiate About Window Size option to - * determine the client text width/height. - */ - boolean doNAWS = true; - - /** - * If true, request the New Environment option to obtain the client - * LOGNAME, USER, and LANG variables. - */ - boolean doEnvironment = true; - - /** - * The terminal type reported by the client. - */ - String terminalType = ""; - - /** - * The terminal speed reported by the client. - */ - String terminalSpeed = ""; - - /** - * See if telnet server/client is in ASCII mode. - * - * @return if true, this connection is in ASCII mode - */ - public boolean isAscii() { - return (!binaryMode); - } - - /** - * Creates a Socket that knows the telnet protocol. Note package private - * access, this is only used by TelnetServerSocket. - * - * @throws IOException if an I/O error occurs - */ - TelnetSocket() throws IOException { - super(); - } - - // Socket interface ------------------------------------------------------- - - /** - * Returns an input stream for this socket. - * - * @return the input stream - * @throws IOException if an I/O error occurs - */ - @Override - public InputStream getInputStream() throws IOException { - if (input == null) { - assert (output == null); - output = new TelnetOutputStream(this, super.getOutputStream()); - input = new TelnetInputStream(this, super.getInputStream(), output); - input.telnetSendOptions(); - } - return input; - } - - /** - * Returns an output stream for this socket. - * - * @return the output stream - * @throws IOException if an I/O error occurs - */ - @Override - public OutputStream getOutputStream() throws IOException { - if (output == null) { - assert (input == null); - output = new TelnetOutputStream(this, super.getOutputStream()); - input = new TelnetInputStream(this, super.getInputStream(), output); - input.telnetSendOptions(); - } - return output; - } - -}