Package 

Class ProducerArbiter

  • All Implemented Interfaces:
    com.tds.common.reactor.Producer

    
    public final class ProducerArbiter
     implements Producer
                        

    Producer that allows changing an underlying producer atomically and correctly resume with the accumulated requests.

    • Method Summary

      Modifier and Type Method Description
      void request(long n) Request a certain maximum number of items from this Producer.
      void produced(long n)
      void setProducer(Producer newProducer)
      void emitLoop()
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • request

         void request(long n)

        Request a certain maximum number of items from this Producer. This is a way of requesting backpressure.To disable backpressure, pass {@code Long.MAX_VALUE} to this method.

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

        request(100);
        request(Long.MAX_VALUE-1);
        
        Parameters:
        n - the maximum number of items you want this Producer to produce, or {@code Long.MAX_VALUE} if youwant the Producer to produce items at its own pace