package com.jediterm.terminal; import com.jediterm.terminal.emulator.Emulator; import java.io.IOException; /** * @author traff */ public abstract class DataStreamIteratingEmulator implements Emulator { protected final TerminalDataStream myDataStream; protected final Terminal myTerminal; private boolean myEof = false; public DataStreamIteratingEmulator(TerminalDataStream dataStream, Terminal terminal) { myDataStream = dataStream; myTerminal = terminal; } @Override public boolean hasNext() { return !myEof; } @Override public void resetEof() { myEof = false; } @Override public void next() throws IOException { try { char b = myDataStream.getChar(); processChar(b, myTerminal); } catch (TerminalDataStream.EOF e) { myEof = true; } } protected abstract void processChar(char ch, Terminal terminal) throws IOException; }