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
public class DefaultSshFuture<T extends SshFuture<T>> extends AbstractSshFuture<T>
A default implementation ofSshFuture.- Author:
- Apache MINA SSHD Project
-
-
Field Summary
-
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
-
Constructor Summary
Constructors Constructor Description DefaultSshFuture(Object id, Object lock)Creates a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TaddListener(SshFutureListener<T> listener)Adds an event listener which is notified when this future is completed.protected Objectawait0(long timeoutMillis, boolean interruptable, CancelOption... options)Wait for the Future to be ready.protected CancelFuturecreateCancellation()Creates aCancelFutureif this future can be canceled.intgetNumRegisteredListeners()ObjectgetValue()booleanisDone()protected voidnotifyListeners()protected voidonValueSet(Object value)Callback that is invoked under lock when the future's value is set.TremoveListener(SshFutureListener<T> listener)Removes an existing event listener so it won't be notified when the future is completed.voidsetValue(Object newValue)Sets the result of the asynchronous operation, and mark it as finished.StringtoString()-
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, awaitUninterruptibly, awaitUninterruptibly, awaitUninterruptibly
-
-
-
-
Method Detail
-
await0
protected Object await0(long timeoutMillis, boolean interruptable, CancelOption... options) throws InterruptedIOException
Description copied from class:AbstractSshFutureWait for the Future to be ready. If the requested delay is 0 or negative, this method returns immediately.- Specified by:
await0in 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. Iftrueand the thread is interrupted then anInterruptedIOExceptionis thrown.options- OptionalCancelOptiondefining the behavior on time-out or interrupt.- Returns:
- The non-
nullresult object if the Future is ready,nullif the timeout expired and no result was received - Throws:
InterruptedIOException- If the thread has been interrupted when it's not allowed.
-
isDone
public boolean isDone()
- Returns:
trueif the asynchronous operation is completed. Note: it is up to the caller to determine whether it was a successful or failed completion.
-
setValue
public void setValue(Object newValue)
Sets the result of the asynchronous operation, and mark it as finished.- Parameters:
newValue- The operation result
-
getNumRegisteredListeners
public int getNumRegisteredListeners()
-
getValue
public Object getValue()
- Returns:
- The result of the asynchronous operation - or
nullif none set.
-
addListener
public T addListener(SshFutureListener<T> listener)
Description copied from interface:SshFutureAdds 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- TheSshFutureListenerinstance to add- Returns:
- The future instance
-
removeListener
public T removeListener(SshFutureListener<T> listener)
Description copied from interface:SshFutureRemoves an existing event listener so it won't be notified when the future is completed.- Parameters:
listener- TheSshFutureListenerinstance to remove- Returns:
- The future instance
-
notifyListeners
protected void notifyListeners()
-
createCancellation
protected CancelFuture createCancellation()
Creates aCancelFutureif this future can be canceled.This doesn't cancel this future yet.
- Returns:
- A
CancelFuturethat can be used to wait for the cancellation to have been effected, ornullif the future cannot be canceled.
-
onValueSet
protected void onValueSet(Object value)
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
-
-