Class DefaultSshFuture<T extends SshFuture<T>>

    • Field Detail

      • lock

        private final java.lang.Object lock
        A lock used by the wait() method
      • listeners

        private java.lang.Object listeners
      • result

        private java.lang.Object result
    • Constructor Detail

      • DefaultSshFuture

        public DefaultSshFuture​(java.lang.Object id,
                                java.lang.Object lock)
        Creates a new instance.
        Parameters:
        id - Some identifier useful as toString() value
        lock - A synchronization object for locking access - if null then synchronization occurs on this instance
    • Method Detail

      • await0

        protected java.lang.Object await0​(long timeoutMillis,
                                          boolean interruptable,
                                          CancelOption... options)
                                   throws java.io.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 class AbstractSshFuture<T extends SshFuture<T>>
        Parameters:
        timeoutMillis - The delay we will wait for the Future to be ready
        interruptable - Tells if the wait can be interrupted or not. If true and the thread is interrupted then an InterruptedIOException is thrown.
        options - Optional CancelOption 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:
        java.io.InterruptedIOException - If the thread has been interrupted when it's not allowed.
      • 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

        public void setValue​(java.lang.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 java.lang.Object getValue()
        Returns:
        The result of the asynchronous operation - or null if none set.
      • addListener

        public T addListener​(SshFutureListener<T> listener)
        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 - The SshFutureListener instance to add
        Returns:
        The future instance
      • removeListener

        public T removeListener​(SshFutureListener<T> listener)
        Description copied from interface: SshFuture
        Removes an existing event listener so it won't be notified when the future is completed.
        Parameters:
        listener - The SshFutureListener instance to remove
        Returns:
        The future instance
      • notifyListeners

        protected void notifyListeners()
      • createCancellation

        protected CancelFuture createCancellation()
        Creates a CancelFuture 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, or null if the future cannot be canceled.
      • onValueSet

        protected void onValueSet​(java.lang.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