Class FutureObserver<T>

  • Type Parameters:
    T - the value type
    All Implemented Interfaces:
    Observer<T>, Disposable, java.util.concurrent.Future<T>

    public final class FutureObserver<T>
    extends java.util.concurrent.CountDownLatch
    implements Observer<T>, java.util.concurrent.Future<T>, Disposable
    An Observer + Future that expects exactly one upstream value and provides it via the (blocking) Future API.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) java.lang.Throwable error  
      (package private) java.util.concurrent.atomic.AtomicReference<Disposable> upstream  
      (package private) T value  
    • Constructor Summary

      Constructors 
      Constructor Description
      FutureObserver()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean cancel​(boolean mayInterruptIfRunning)  
      void dispose()
      Dispose the resource, the operation should be idempotent.
      T get()  
      T get​(long timeout, @NonNull java.util.concurrent.TimeUnit unit)  
      boolean isCancelled()  
      boolean isDisposed()
      Returns true if this resource has been disposed.
      boolean isDone()  
      void onComplete()
      Notifies the Observer that the Observable has finished sending push-based notifications.
      void onError​(java.lang.Throwable t)
      Notifies the Observer that the Observable has experienced an error condition.
      void onNext​(T t)
      Provides the Observer with a new item to observe.
      void onSubscribe​(Disposable d)
      Provides the Observer with the means of cancelling (disposing) the connection (channel) with the Observable in both synchronous (from within Observer.onNext(Object)) and asynchronous manner.
      • Methods inherited from class java.util.concurrent.CountDownLatch

        await, await, countDown, getCount, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • value

        T value
      • error

        java.lang.Throwable error
      • upstream

        final java.util.concurrent.atomic.AtomicReference<Disposable> upstream
    • Constructor Detail

      • FutureObserver

        public FutureObserver()
    • Method Detail

      • cancel

        public boolean cancel​(boolean mayInterruptIfRunning)
        Specified by:
        cancel in interface java.util.concurrent.Future<T>
      • isCancelled

        public boolean isCancelled()
        Specified by:
        isCancelled in interface java.util.concurrent.Future<T>
      • isDone

        public boolean isDone()
        Specified by:
        isDone in interface java.util.concurrent.Future<T>
      • get

        public T get()
              throws java.lang.InterruptedException,
                     java.util.concurrent.ExecutionException
        Specified by:
        get in interface java.util.concurrent.Future<T>
        Throws:
        java.lang.InterruptedException
        java.util.concurrent.ExecutionException
      • get

        public T get​(long timeout,
                     @NonNull
                     @NonNull java.util.concurrent.TimeUnit unit)
              throws java.lang.InterruptedException,
                     java.util.concurrent.ExecutionException,
                     java.util.concurrent.TimeoutException
        Specified by:
        get in interface java.util.concurrent.Future<T>
        Throws:
        java.lang.InterruptedException
        java.util.concurrent.ExecutionException
        java.util.concurrent.TimeoutException
      • dispose

        public void dispose()
        Description copied from interface: Disposable
        Dispose the resource, the operation should be idempotent.
        Specified by:
        dispose in interface Disposable
      • isDisposed

        public boolean isDisposed()
        Description copied from interface: Disposable
        Returns true if this resource has been disposed.
        Specified by:
        isDisposed in interface Disposable
        Returns:
        true if this resource has been disposed