Package org.apache.sshd.common.future
Class AbstractSshFuture<T extends SshFuture>
- java.lang.Object
-
- org.apache.sshd.common.util.logging.AbstractLoggingBean
-
- org.apache.sshd.common.future.AbstractSshFuture<T>
-
- Type Parameters:
T
- Type of future
- All Implemented Interfaces:
SshFuture<T>
,WaitableFuture
- Direct Known Subclasses:
DefaultSshFuture
public abstract class AbstractSshFuture<T extends SshFuture> extends AbstractLoggingBean implements SshFuture<T>
- Author:
- Apache MINA SSHD Project
-
-
Field Summary
Fields Modifier and Type Field Description protected static Object
CANCELED
A default value to indicate the future has been canceledprotected boolean
debugEnabled
protected boolean
traceEnabled
-
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractSshFuture(Object id)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected SshFutureListener<T>
asListener(Object o)
protected T
asT()
boolean
await(long timeoutMillis)
Wait for the asynchronous operation to complete with the specified timeout.protected abstract Object
await0(long timeoutMillis, boolean interruptable)
Wait for the Future to be ready.boolean
awaitUninterruptibly(long timeoutMillis)
Wait for the asynchronous operation to complete with the specified timeout uninterruptibly.protected <E extends Throwable>
EformatExceptionMessage(Function<? super String,? extends E> exceptionCreator, String format, Object... args)
Generates an exception whose message is prefixed by the future simple class name +identifier
as a hint to the context of the failure.Object
getId()
protected void
notifyListener(SshFutureListener<T> l)
String
toString()
protected <R> R
verifyResult(Class<? extends R> expectedType, long timeout)
Waits (interruptible) for the specified timeout (msec.) and then checks the result:-
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
getSimplifiedLogger
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.sshd.common.future.SshFuture
addListener, removeListener
-
Methods inherited from interface org.apache.sshd.common.future.WaitableFuture
await, await, awaitUninterruptibly, awaitUninterruptibly, isDone
-
-
-
-
Field Detail
-
CANCELED
protected static final Object CANCELED
A default value to indicate the future has been canceled
-
debugEnabled
protected final boolean debugEnabled
-
traceEnabled
protected final boolean traceEnabled
-
-
Constructor Detail
-
AbstractSshFuture
protected AbstractSshFuture(Object id)
- Parameters:
id
- Some identifier useful astoString()
value
-
-
Method Detail
-
getId
public Object getId()
- Specified by:
getId
in interfaceWaitableFuture
- Returns:
- Some identifier useful as
toString()
value
-
await
public boolean await(long timeoutMillis) throws IOException
Description copied from interface:WaitableFuture
Wait for the asynchronous operation to complete with the specified timeout.- Specified by:
await
in interfaceWaitableFuture
- Parameters:
timeoutMillis
- Wait time in milliseconds- Returns:
true
if the operation is completed.- Throws:
IOException
- if failed - specificallyInterruptedIOException
if waiting was interrupted
-
awaitUninterruptibly
public boolean awaitUninterruptibly(long timeoutMillis)
Description copied from interface:WaitableFuture
Wait for the asynchronous operation to complete with the specified timeout uninterruptibly.- Specified by:
awaitUninterruptibly
in interfaceWaitableFuture
- Parameters:
timeoutMillis
- Wait time in milliseconds- Returns:
true
if the operation is finished.
-
verifyResult
protected <R> R verifyResult(Class<? extends R> expectedType, long timeout) throws IOException
Waits (interruptible) for the specified timeout (msec.) and then checks the result:
If result is
null
then timeout is assumed to have expired - throw an appropriateIOException
If the result is of the expected type, then cast and return it
If the result is an
IOException
then re-throw itIf the result is a
Throwable
then throw anIOException
whose cause is the original exceptionOtherwise (should never happen), throw a
StreamCorruptedException
with the name of the result type
- Type Parameters:
R
- The generic result type- Parameters:
expectedType
- The expected result typetimeout
- The timeout (millis) to wait for a result- Returns:
- The (never
null
) result - Throws:
IOException
- If failed to retrieve the expected result on time
-
await0
protected abstract Object await0(long timeoutMillis, boolean interruptable) throws InterruptedIOException
Wait for the Future to be ready. If the requested delay is 0 or negative, this method returns immediately.- Parameters:
timeoutMillis
- The delay we will wait for the Future to be readyinterruptable
- Tells if the wait can be interrupted or not. Iftrue
and the thread is interrupted then anInterruptedIOException
is thrown.- Returns:
- The non-
null
result object if the Future is ready,null
if the timeout expired and no result was received - Throws:
InterruptedIOException
- If the thread has been interrupted when it's not allowed.
-
asListener
protected SshFutureListener<T> asListener(Object o)
-
notifyListener
protected void notifyListener(SshFutureListener<T> l)
-
asT
protected T asT()
-
formatExceptionMessage
protected <E extends Throwable> E formatExceptionMessage(Function<? super String,? extends E> exceptionCreator, String format, Object... args)
Generates an exception whose message is prefixed by the future simple class name +identifier
as a hint to the context of the failure.- Type Parameters:
E
- Type ofThrowable
being generated- Parameters:
exceptionCreator
- The exception creator from the formatted messageformat
- The extra payload format as perString.format(String, Object...)
args
- The formatting arguments- Returns:
- The generated exception
-
-