Package org.apache.sshd.common.future
Class DefaultSshFuture<T extends SshFuture<T>>
java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.future.AbstractSshFuture<T>
org.apache.sshd.common.future.DefaultSshFuture<T>
- Type Parameters:
T
- Type of future
- All Implemented Interfaces:
SshFuture<T>
,WaitableFuture
- Direct Known Subclasses:
DefaultCancelFuture
,DefaultCloseFuture
,DefaultVerifiableSshFuture
,GlobalRequestFuture
A default implementation of
SshFuture
.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Object
private final Object
A lock used by the wait() methodprivate Object
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddListener
(SshFutureListener<T> listener) Adds an event listener which is notified when this future is completed.protected Object
await0
(long timeoutMillis, boolean interruptable, CancelOption... options) Wait for the Future to be ready.private CancelFuture
cancelOnTimeout
(long timeoutMillis, CancelOption... options) protected CancelFuture
Creates aCancelFuture
if this future can be canceled.int
getValue()
boolean
isDone()
protected void
protected void
onValueSet
(Object value) Callback that is invoked under lock when the future's value is set.removeListener
(SshFutureListener<T> listener) Removes an existing event listener so it won't be notified when the future is completed.void
Sets the result of the asynchronous operation, and mark it as finished.toString()
Methods inherited from class org.apache.sshd.common.future.AbstractSshFuture
asListener, asT, await, awaitUninterruptibly, formatExceptionMessage, getId, notifyListener, verifyResult
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
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.WaitableFuture
await, await, await, await, await, await, await, awaitUninterruptibly, awaitUninterruptibly, awaitUninterruptibly, awaitUninterruptibly, awaitUninterruptibly, awaitUninterruptibly, awaitUninterruptibly
-
Field Details
-
lock
A lock used by the wait() method -
listeners
-
result
-
-
Constructor Details
-
DefaultSshFuture
Creates a new instance.- Parameters:
id
- Some identifier useful astoString()
valuelock
- A synchronization object for locking access - ifnull
then synchronization occurs onthis
instance
-
-
Method Details
-
await0
protected Object await0(long timeoutMillis, boolean interruptable, CancelOption... options) throws InterruptedIOException Description copied from class:AbstractSshFuture
Wait for the Future to be ready. If the requested delay is 0 or negative, this method returns immediately.- Specified by:
await0
in classAbstractSshFuture<T extends SshFuture<T>>
- 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.options
- OptionalCancelOption
defining the behavior on time-out or interrupt.- 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.
-
cancelOnTimeout
-
isDone
public boolean isDone()- Returns:
true
if the asynchronous operation is completed. Note: it is up to the caller to determine whether it was a successful or failed completion.
-
setValue
Sets the result of the asynchronous operation, and mark it as finished.- Parameters:
newValue
- The operation result
-
getNumRegisteredListeners
public int getNumRegisteredListeners() -
getValue
- Returns:
- The result of the asynchronous operation - or
null
if none set.
-
addListener
Description copied from interface:SshFuture
Adds an event listener which is notified when this future is completed. If the listener is added after the completion, the listener is directly notified.- Parameters:
listener
- TheSshFutureListener
instance to add- Returns:
- The future instance
-
removeListener
Description copied from interface:SshFuture
Removes an existing event listener so it won't be notified when the future is completed.- Parameters:
listener
- TheSshFutureListener
instance to remove- Returns:
- The future instance
-
notifyListeners
protected void notifyListeners() -
createCancellation
Creates aCancelFuture
if this future can be canceled.This doesn't cancel this future yet.
- Returns:
- A
CancelFuture
that can be used to wait for the cancellation to have been effected, ornull
if the future cannot be canceled.
-
onValueSet
Callback that is invoked under lock when the future's value is set.As this is called under lock, subclasses should not do any elaborate processing. It is intended to give subclasses a safe and convenient way to update local state before any listeners are invoked or callers waiting in
await0(long, boolean, CancelOption...)
are woken up.The default implementation does nothing.
- Parameters:
value
- that was just set
-
toString
- Overrides:
toString
in classAbstractSshFuture<T extends SshFuture<T>>
-