Class SingleDelayedProducer<T>

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.AtomicInteger
rx.internal.producers.SingleDelayedProducer<T>
Type Parameters:
T - the value type
All Implemented Interfaces:
Serializable, Producer

public final class SingleDelayedProducer<T> extends AtomicInteger implements Producer
Producer that emits a single value and completes the child subscriber once that single value is set on it and the child requested items (maybe both asynchronously).
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • child

      final Subscriber<? super T> child
      The child to emit the value and completion once possible.
    • value

      T value
      The value to emit.
    • NO_REQUEST_NO_VALUE

      static final int NO_REQUEST_NO_VALUE
      See Also:
    • NO_REQUEST_HAS_VALUE

      static final int NO_REQUEST_HAS_VALUE
      See Also:
    • HAS_REQUEST_NO_VALUE

      static final int HAS_REQUEST_NO_VALUE
      See Also:
    • HAS_REQUEST_HAS_VALUE

      static final int HAS_REQUEST_HAS_VALUE
      See Also:
  • Constructor Details

    • SingleDelayedProducer

      public SingleDelayedProducer(Subscriber<? super T> child)
      Constructor, wraps the target child subscriber.
      Parameters:
      child - the child subscriber, not null
  • Method Details

    • request

      public void request(long n)
      Description copied from interface: Producer
      Request a certain maximum number of items from this Producer. This is a way of requesting backpressure. To disable backpressure, pass Long.MAX_VALUE to this method.

      Requests are additive but if a sequence of requests totals more than Long.MAX_VALUE then Long.MAX_VALUE requests will be actioned and the extras may be ignored. Arriving at Long.MAX_VALUE by addition of requests cannot be assumed to disable backpressure. For example, the code below may result in Long.MAX_VALUE requests being actioned only.

       request(100);
       request(Long.MAX_VALUE-1);
       
      Specified by:
      request in interface Producer
      Parameters:
      n - the maximum number of items you want this Producer to produce, or Long.MAX_VALUE if you want the Producer to produce items at its own pace
    • setValue

      public void setValue(T value)
    • emit

      private static <T> void emit(Subscriber<? super T> c, T v)
      Emits the given value to the child subscriber and completes it and checks for unsubscriptions eagerly.
      Parameters:
      c -
      v -