package org.xmlsh.core.io; import java.io.IOException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.xmlsh.core.InputPort; /* * Shell IO interface, may be shared across shells and threads. * May refer to ShellConsole, other streams, or nothing at all * */ public class ShellIO { private boolean mUseConsole ; static Logger mLogger = LogManager.getLogger(); private IShellPrompt mPrompt = null ; private ShellReader mReader; public ShellReader getReader(){ if( mReader == null ) // TODO: Dont allocatre ShellConsole if not needed setReader(ShellConsole.getConsole().newReader( mUseConsole , mPrompt )); // may return null if no console available return mReader; } public ShellIO(boolean bUseConsole ) { mUseConsole = bUseConsole ; } public ShellIO(ShellReader reader) { mReader = reader; mUseConsole = false ; } public String readCommandLine(String prompt) throws IOException { return getReader().readLine(prompt); } public InputPort getInputPort() { return getReader().getInputPort(); } public OutputPort getOutuptPort() { return getReader().getOutputPort(); } public OutputPort getErrorPort() { return getReader().getErrorPort(); } public IShellPrompt getPrompt() { return mPrompt; } public void setPrompt(IShellPrompt prompt) { mPrompt = prompt; } private void setReader(ShellReader reader) { mReader = reader; } }