public class InvertedShellWrapper extends AbstractLoggingBean implements Command, SessionAware
InvertedShell
as a Command
. This is useful when using external
processes.
When starting the shell, this wrapper will also create a thread used
to pump the streams and also to check if the shell is alive.Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_BUFFER_SIZE
Default buffer size for the I/O pumps.
|
static long |
DEFAULT_PUMP_SLEEP_TIME
Default value for
PUMP_SLEEP_TIME if none set |
static String |
PUMP_SLEEP_TIME
Value used to control the "busy-wait" sleep time (millis) on
the pumping loop if nothing was pumped - must be positive
|
log
Constructor and Description |
---|
InvertedShellWrapper(InvertedShell shell)
Auto-allocates an
Executor in order to create the streams pump thread
and uses the DEFAULT_BUFFER_SIZE |
InvertedShellWrapper(InvertedShell shell,
Executor executor,
boolean shutdownExecutor,
int bufferSize) |
InvertedShellWrapper(InvertedShell shell,
int bufferSize)
Auto-allocates an
Executor in order to create the streams pump thread |
Modifier and Type | Method and Description |
---|---|
void |
destroy()
This method is called by the SSH server to destroy the command because
the client has disconnected somehow.
|
protected boolean |
pumpStream(InputStream in,
OutputStream out,
byte[] buffer) |
protected void |
pumpStreams() |
void |
setErrorStream(OutputStream err)
Set the error stream that can be used by the shell to write its errors.
|
void |
setExitCallback(ExitCallback callback)
Set the callback that the shell has to call when it is closed.
|
void |
setInputStream(InputStream in)
Set the input stream that can be used by the shell to read input.
|
void |
setOutputStream(OutputStream out)
Set the output stream that can be used by the shell to write its output.
|
void |
setSession(ServerSession session) |
void |
start(Environment env)
Starts the command execution.
|
String |
toString() |
public static final int DEFAULT_BUFFER_SIZE
public static final String PUMP_SLEEP_TIME
DEFAULT_PUMP_SLEEP_TIME
,
Constant Field Valuespublic static final long DEFAULT_PUMP_SLEEP_TIME
PUMP_SLEEP_TIME
if none setpublic InvertedShellWrapper(InvertedShell shell)
Executor
in order to create the streams pump thread
and uses the DEFAULT_BUFFER_SIZE
shell
- The InvertedShell
InvertedShellWrapper(InvertedShell, int)
public InvertedShellWrapper(InvertedShell shell, int bufferSize)
Executor
in order to create the streams pump threadshell
- The InvertedShell
bufferSize
- Buffer size to use - must be above min. size (Byte.SIZE
)InvertedShellWrapper(InvertedShell, Executor, boolean, int)
public InvertedShellWrapper(InvertedShell shell, Executor executor, boolean shutdownExecutor, int bufferSize)
shell
- The InvertedShell
executor
- The Executor
to use in order to create the streams pump thread.
If null
one is auto-allocated and shutdown when wrapper is destroy()
-ed.shutdownExecutor
- If true
the executor is shut down when shell wrapper is destroy()
-ed.
Ignored if executor service auto-allocatedbufferSize
- Buffer size to use - must be above min. size (Byte.SIZE
)public void setInputStream(InputStream in)
Command
setInputStream
in interface Command
in
- The InputStream
used by the shell to read input.public void setOutputStream(OutputStream out)
Command
setOutputStream
in interface Command
out
- The OutputStream
used by the shell to write its outputpublic void setErrorStream(OutputStream err)
Command
setErrorStream
in interface Command
err
- The OutputStream
used by the shell to write its errorspublic void setExitCallback(ExitCallback callback)
Command
setExitCallback
in interface Command
callback
- The ExitCallback
to call when shell is closedpublic void setSession(ServerSession session)
setSession
in interface SessionAware
session
- The ServerSession
in which this shell will be executed.public void start(Environment env) throws IOException
CommandLifecycle
Runnable
,
and this method should spawn a new thread like:
Thread(this).start();
start
in interface CommandLifecycle
env
- The Environment
IOException
- If failed to startpublic void destroy() throws Exception
CommandLifecycle
destroy
in interface CommandLifecycle
Exception
- if failed to destroyprotected void pumpStreams()
protected boolean pumpStream(InputStream in, OutputStream out, byte[] buffer) throws IOException
IOException
Copyright © 2008–2016 The Apache Software Foundation. All rights reserved.