/** * */ package com.jediterm.terminal; import java.awt.*; import java.io.IOException; /** * Takes data from and sends it back to TTY input and output streams via {@link TtyConnector} */ public class TtyChannel extends ArrayTerminalDataStream { private TtyConnector myTtyConnector; public TtyChannel(final TtyConnector ttyConnector) { super(new char[1024], 0, 0); myTtyConnector = ttyConnector; } private void fillBuf() throws IOException { myOffset = 0; myLength = myTtyConnector.read(myBuf, myOffset, myBuf.length); if (myLength <= 0) { myLength = 0; throw new EOF(); } } public char getChar() throws IOException { if (myLength == 0) { fillBuf(); } return super.getChar(); } public String readNonControlCharacters(int maxChars) throws IOException { if (myLength == 0) { fillBuf(); } return super.readNonControlCharacters(maxChars); } public void sendBytes(final byte[] bytes) throws IOException { myTtyConnector.write(bytes); } public void postResize(final Dimension termSize, final Dimension pixelSize) { myTtyConnector.resize(termSize, pixelSize); } public boolean isConnected() { return myTtyConnector.isConnected(); } public void sendString(String string) throws IOException { myTtyConnector.write(string); } }