Class ProducerArbiter

java.lang.Object
rx.internal.producers.ProducerArbiter
All Implemented Interfaces:
Producer

public final class ProducerArbiter extends Object implements Producer
Producer that allows changing an underlying producer atomically and correctly resume with the accumulated requests.
  • Field Details

    • requested

      long requested
    • currentProducer

      Producer currentProducer
    • emitting

      boolean emitting
    • missedRequested

      long missedRequested
    • missedProduced

      long missedProduced
    • missedProducer

      Producer missedProducer
    • NULL_PRODUCER

      static final Producer NULL_PRODUCER
  • Constructor Details

    • ProducerArbiter

      public ProducerArbiter()
  • 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
    • produced

      public void produced(long n)
    • setProducer

      public void setProducer(Producer newProducer)
    • emitLoop

      public void emitLoop()