/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.utils.executor; import java.io.IOException; import java.io.InputStream; /** * Low-level command-line execution API for executing commands in the RCE console. * * @author Brigitte Boden * @author Robert Mischke * */ public interface RCECommandLineExecutor { /** * Starts the executor with the provided command line to run. * @param commandString the command line to execute * * @throws IOException if an I/O error occurs on start of the target executable */ void start(String commandString) throws IOException; /** * Starts the executor with the provided command line to run, and an input stream as a source of * StdIn data. * * @param commandString the command line to execute * @param stdinStream the input stream to read standard input data from, or "null" to disable * * @throws IOException if an I/O error occurs on start of the target executable */ void start(String commandString, InputStream stdinStream) throws IOException; /** * Returns the STDOUT stream; only valid after calling one of the "start" methods. * * @return the standard output stream of the invoked command * @throws IOException if the stream could not be acquired */ InputStream getStdout() throws IOException; /** * Returns the STDERR stream; only valid after calling one of the "start" methods. * * @return the standard error stream of the invoked command * @throws IOException if the stream could not be acquired */ InputStream getStderr() throws IOException; /** * Waits for the invoked command to end and returns its exit code. Waiting may be interrupted by * I/O errors of thread interruption. * * @return the command-line exit code * @throws IOException if an I/O error occured while waiting, for example breakdown of a network * connection to the execution host * @throws InterruptedException if the waiting thread was interrupted */ int waitForTermination() throws IOException, InterruptedException; }