Package rx

Interface Producer

All Known Implementing Classes:
AsyncOnSubscribe.AsyncOuterManager, BackpressureDrainManager, CachedObservable.ReplayProducer, DeferredScalarSubscriber.InnerProducer, OnSubscribeCombineLatest.LatestCoordinator, OnSubscribeConcatMap.ConcatMapInnerScalarProducer, OnSubscribeDetach.DetachProducer, OnSubscribeDetach.TerminatedProducer, OnSubscribeFromArray.FromArrayProducer, OnSubscribeFromAsync.BaseAsyncEmitter, OnSubscribeFromAsync.BufferAsyncEmitter, OnSubscribeFromAsync.DropAsyncEmitter, OnSubscribeFromAsync.ErrorAsyncEmitter, OnSubscribeFromAsync.LatestAsyncEmitter, OnSubscribeFromAsync.NoneAsyncEmitter, OnSubscribeFromAsync.NoOverflowBaseAsyncEmitter, OnSubscribeFromIterable.IterableProducer, OnSubscribePublishMulticast.PublishProducer, OnSubscribeRange.RangeProducer, OperatorBufferWithSize.BufferOverlap.BufferOverlapProducer, OperatorBufferWithSize.BufferSkip.BufferSkipProducer, OperatorEagerConcatMap.EagerOuterProducer, OperatorElementAt.InnerProducer, OperatorGroupBy.GroupByProducer, OperatorGroupBy.State, OperatorMerge.MergeProducer, OperatorOnBackpressureLatest.LatestEmitter, OperatorPublish.InnerProducer, OperatorReplay.InnerProducer, OperatorScan.InitialProducer, OperatorWindowWithSize.WindowOverlap.WindowOverlapProducer, OperatorWindowWithSize.WindowSkip.WindowSkipProducer, OperatorZip.ZipProducer, ProducerArbiter, ProducerObserverArbiter, QueuedProducer, QueuedValueProducer, ReplaySubject.ReplayProducer, ScalarSynchronousObservable.ScalarAsyncProducer, ScalarSynchronousObservable.WeakSingleProducer, SingleDelayedProducer, SingleProducer, SyncOnSubscribe.SubscriptionProducer, UnicastSubject.State

public interface Producer
Interface that establishes a request-channel between an Observable and a Subscriber and allows the Subscriber to request a certain amount of items from the Observable (otherwise known as backpressure).

The request amount only affects calls to Observer.onNext(Object); onError and onCompleted may appear without requests.

However, backpressure is somewhat optional in RxJava 1.x and Subscribers may not receive a Producer via their Subscriber.setProducer(Producer) method and will run in unbounded mode. Depending on the chain of operators, this can lead to MissingBackpressureException.

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    request(long n)
    Request a certain maximum number of items from this Producer.
  • Method Details

    • 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 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);
       
      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
      Throws:
      IllegalArgumentException - if the request amount is negative