Class FlowableReplay<T>
java.lang.Object
io.reactivex.rxjava3.core.Flowable<T>
io.reactivex.rxjava3.flowables.ConnectableFlowable<T>
io.reactivex.rxjava3.internal.operators.flowable.FlowableReplay<T>
- All Implemented Interfaces:
HasUpstreamPublisher<T>,org.reactivestreams.Publisher<T>
public final class FlowableReplay<T>
extends ConnectableFlowable<T>
implements HasUpstreamPublisher<T>
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static classBase class for bounded buffering with options to specify an enter and leave transforms and custom truncation behavior.(package private) static final class(package private) static final classA Subscription that manages the request and cancellation state of a child subscriber in thread-safe manner.(package private) static final class(package private) static final classRepresents a node in a bounded replay buffer's linked list.(package private) static interfaceThe interface for interacting with various buffering logic.(package private) static final class(package private) static final class(package private) static final class(package private) static final class(package private) static final classSize and time bound replay buffer.(package private) static final classA bounded replay buffer implementation with size limit only.(package private) static final classHolds an unbounded list of events. -
Field Summary
FieldsModifier and TypeFieldDescription(package private) final Supplier<? extends FlowableReplay.ReplayBuffer<T>> A factory that creates the appropriate buffer for the ReplaySubscriber.(package private) final AtomicReference<FlowableReplay.ReplaySubscriber<T>> Holds the current subscriber that is, will be or just was subscribed to the source observable.(package private) static final Supplier(package private) final org.reactivestreams.Publisher<T> The source observable. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateFlowableReplay(org.reactivestreams.Publisher<T> onSubscribe, Flowable<T> source, AtomicReference<FlowableReplay.ReplaySubscriber<T>> current, Supplier<? extends FlowableReplay.ReplayBuffer<T>> bufferFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoidconnect(Consumer<? super Disposable> connection) Instructs theConnectableFlowableto begin emitting the items from its underlyingFlowableto itsSubscribers.static <T> ConnectableFlowable<T> Creates a replaying ConnectableObservable with a size bound buffer.static <T> ConnectableFlowable<T> Creates a replaying ConnectableObservable with a time bound buffer.static <T> ConnectableFlowable<T> create(Flowable<T> source, long maxAge, TimeUnit unit, Scheduler scheduler, int bufferSize, boolean eagerTruncate) Creates a replaying ConnectableObservable with a size and time bound buffer.(package private) static <T> ConnectableFlowable<T> create(Flowable<T> source, Supplier<? extends FlowableReplay.ReplayBuffer<T>> bufferFactory) Creates a OperatorReplay instance to replay values of the given sourceFlowable.static <T> ConnectableFlowable<T> createFrom(Flowable<? extends T> source) Creates a replaying ConnectableObservable with an unbounded buffer.static <U,R> Flowable <R> multicastSelector(Supplier<? extends ConnectableFlowable<U>> connectableFactory, Function<? super Flowable<U>, ? extends org.reactivestreams.Publisher<R>> selector) Given a connectable observable factory, it multicasts over the generated ConnectableObservable via a selector function.voidreset()Resets thisConnectableFlowableinto its fresh state if it has terminated.org.reactivestreams.Publisher<T> source()Returns the source Publisher.protected voidsubscribeActual(org.reactivestreams.Subscriber<? super T> s) Operator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingSubscribers.Methods inherited from class io.reactivex.rxjava3.flowables.ConnectableFlowable
autoConnect, autoConnect, autoConnect, connect, refCount, refCount, refCount, refCount, refCount, refCountMethods inherited from class io.reactivex.rxjava3.core.Flowable
all, amb, ambArray, ambWith, any, blockingFirst, blockingFirst, blockingForEach, blockingForEach, blockingIterable, blockingIterable, blockingLast, blockingLast, blockingLatest, blockingMostRecent, blockingNext, blockingSingle, blockingSingle, blockingStream, blockingStream, blockingSubscribe, blockingSubscribe, blockingSubscribe, blockingSubscribe, blockingSubscribe, blockingSubscribe, blockingSubscribe, blockingSubscribe, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, bufferSize, cache, cacheWithInitialCapacity, cast, collect, collect, collectInto, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatestArray, combineLatestArray, combineLatestArrayDelayError, combineLatestArrayDelayError, combineLatestDelayError, combineLatestDelayError, compose, concat, concat, concat, concat, concat, concat, concatArray, concatArrayDelayError, concatArrayEager, concatArrayEager, concatArrayEagerDelayError, concatArrayEagerDelayError, concatDelayError, concatDelayError, concatDelayError, concatEager, concatEager, concatEager, concatEager, concatEagerDelayError, concatEagerDelayError, concatEagerDelayError, concatEagerDelayError, concatMap, concatMap, concatMap, concatMapCompletable, concatMapCompletable, concatMapCompletableDelayError, concatMapCompletableDelayError, concatMapCompletableDelayError, concatMapDelayError, concatMapDelayError, concatMapDelayError, concatMapEager, concatMapEager, concatMapEagerDelayError, concatMapEagerDelayError, concatMapIterable, concatMapIterable, concatMapMaybe, concatMapMaybe, concatMapMaybeDelayError, concatMapMaybeDelayError, concatMapMaybeDelayError, concatMapSingle, concatMapSingle, concatMapSingleDelayError, concatMapSingleDelayError, concatMapSingleDelayError, concatMapStream, concatMapStream, concatWith, concatWith, concatWith, concatWith, contains, count, create, debounce, debounce, debounce, debounce, defaultIfEmpty, defer, delay, delay, delay, delay, delay, delay, delaySubscription, delaySubscription, delaySubscription, dematerialize, distinct, distinct, distinct, distinctUntilChanged, distinctUntilChanged, distinctUntilChanged, doAfterNext, doAfterTerminate, doFinally, doOnCancel, doOnComplete, doOnEach, doOnEach, doOnError, doOnLifecycle, doOnNext, doOnRequest, doOnSubscribe, doOnTerminate, elementAt, elementAt, elementAtOrError, empty, error, error, filter, first, firstElement, firstOrError, firstOrErrorStage, firstStage, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMapCompletable, flatMapCompletable, flatMapIterable, flatMapIterable, flatMapIterable, flatMapIterable, flatMapMaybe, flatMapMaybe, flatMapSingle, flatMapSingle, flatMapStream, flatMapStream, forEach, forEachWhile, forEachWhile, forEachWhile, fromAction, fromArray, fromCallable, fromCompletable, fromCompletionStage, fromFuture, fromFuture, fromIterable, fromMaybe, fromObservable, fromOptional, fromPublisher, fromRunnable, fromSingle, fromStream, fromSupplier, generate, generate, generate, generate, generate, groupBy, groupBy, groupBy, groupBy, groupBy, groupBy, groupJoin, hide, ignoreElements, interval, interval, interval, interval, intervalRange, intervalRange, isEmpty, join, just, just, just, just, just, just, just, just, just, just, last, lastElement, lastOrError, lastOrErrorStage, lastStage, lift, map, mapOptional, materialize, merge, merge, merge, merge, merge, merge, merge, merge, mergeArray, mergeArray, mergeArrayDelayError, mergeArrayDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeWith, mergeWith, mergeWith, mergeWith, never, observeOn, observeOn, observeOn, ofType, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureDrop, onBackpressureDrop, onBackpressureLatest, onBackpressureLatest, onBackpressureReduce, onBackpressureReduce, onErrorComplete, onErrorComplete, onErrorResumeNext, onErrorResumeWith, onErrorReturn, onErrorReturnItem, onTerminateDetach, parallel, parallel, parallel, publish, publish, publish, publish, range, rangeLong, rebatchRequests, reduce, reduce, reduceWith, repeat, repeat, repeatUntil, repeatWhen, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, retry, retry, retry, retry, retry, retryUntil, retryWhen, safeSubscribe, sample, sample, sample, sample, sample, sample, sample, scan, scan, scanWith, sequenceEqual, sequenceEqual, sequenceEqual, sequenceEqual, serialize, share, single, singleElement, singleOrError, singleOrErrorStage, singleStage, skip, skip, skip, skipLast, skipLast, skipLast, skipLast, skipLast, skipLast, skipUntil, skipWhile, sorted, sorted, startWith, startWith, startWith, startWith, startWithArray, startWithItem, startWithIterable, subscribe, subscribe, subscribe, subscribe, subscribe, subscribe, subscribe, subscribeOn, subscribeOn, subscribeWith, switchIfEmpty, switchMap, switchMap, switchMapCompletable, switchMapCompletableDelayError, switchMapDelayError, switchMapDelayError, switchMapMaybe, switchMapMaybeDelayError, switchMapSingle, switchMapSingleDelayError, switchOnNext, switchOnNext, switchOnNextDelayError, switchOnNextDelayError, take, take, take, takeLast, takeLast, takeLast, takeLast, takeLast, takeLast, takeLast, takeLast, takeLast, takeUntil, takeUntil, takeWhile, test, test, test, throttleFirst, throttleFirst, throttleFirst, throttleLast, throttleLast, throttleLast, throttleLatest, throttleLatest, throttleLatest, throttleLatest, throttleLatest, throttleWithTimeout, throttleWithTimeout, throttleWithTimeout, timeInterval, timeInterval, timeInterval, timeInterval, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timer, timer, timestamp, timestamp, timestamp, timestamp, to, toFuture, toList, toList, toList, toMap, toMap, toMap, toMultimap, toMultimap, toMultimap, toMultimap, toObservable, toSortedList, toSortedList, toSortedList, toSortedList, unsafeCreate, unsubscribeOn, using, using, window, window, window, window, window, window, window, window, window, window, window, window, window, window, window, window, window, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipArray, zipWith, zipWith, zipWith, zipWith
-
Field Details
-
source
The source observable. -
current
Holds the current subscriber that is, will be or just was subscribed to the source observable. -
bufferFactory
A factory that creates the appropriate buffer for the ReplaySubscriber. -
onSubscribe
-
DEFAULT_UNBOUNDED_FACTORY
-
-
Constructor Details
-
FlowableReplay
private FlowableReplay(org.reactivestreams.Publisher<T> onSubscribe, Flowable<T> source, AtomicReference<FlowableReplay.ReplaySubscriber<T>> current, Supplier<? extends FlowableReplay.ReplayBuffer<T>> bufferFactory)
-
-
Method Details
-
multicastSelector
public static <U,R> Flowable<R> multicastSelector(Supplier<? extends ConnectableFlowable<U>> connectableFactory, Function<? super Flowable<U>, ? extends org.reactivestreams.Publisher<R>> selector) Given a connectable observable factory, it multicasts over the generated ConnectableObservable via a selector function.- Type Parameters:
U- the connectable observable typeR- the result type- Parameters:
connectableFactory- the factory that returns a ConnectableFlowable for each individual subscriberselector- the function that receives a Flowable and should return another Flowable that will be subscribed to- Returns:
- the new Observable instance
-
createFrom
Creates a replaying ConnectableObservable with an unbounded buffer.- Type Parameters:
T- the value type- Parameters:
source- the source Publisher to use- Returns:
- the new ConnectableObservable instance
-
create
public static <T> ConnectableFlowable<T> create(Flowable<T> source, int bufferSize, boolean eagerTruncate) Creates a replaying ConnectableObservable with a size bound buffer.- Type Parameters:
T- the value type- Parameters:
source- the source Flowable to usebufferSize- the maximum number of elements to holdeagerTruncate- if true, the head reference is refreshed to avoid unwanted item retention- Returns:
- the new ConnectableObservable instance
-
create
public static <T> ConnectableFlowable<T> create(Flowable<T> source, long maxAge, TimeUnit unit, Scheduler scheduler, boolean eagerTruncate) Creates a replaying ConnectableObservable with a time bound buffer.- Type Parameters:
T- the value type- Parameters:
source- the source Flowable to usemaxAge- the maximum age of entriesunit- the unit of measure of the age amountscheduler- the target scheduler providing the current timeeagerTruncate- if true, the head reference is refreshed to avoid unwanted item retention- Returns:
- the new ConnectableObservable instance
-
create
public static <T> ConnectableFlowable<T> create(Flowable<T> source, long maxAge, TimeUnit unit, Scheduler scheduler, int bufferSize, boolean eagerTruncate) Creates a replaying ConnectableObservable with a size and time bound buffer.- Type Parameters:
T- the value type- Parameters:
source- the source Flowable to usemaxAge- the maximum age of entriesunit- the unit of measure of the age amountscheduler- the target scheduler providing the current timebufferSize- the maximum number of elements to holdeagerTruncate- if true, the head reference is refreshed to avoid unwanted item retention- Returns:
- the new ConnectableFlowable instance
-
create
static <T> ConnectableFlowable<T> create(Flowable<T> source, Supplier<? extends FlowableReplay.ReplayBuffer<T>> bufferFactory) Creates a OperatorReplay instance to replay values of the given sourceFlowable.- Type Parameters:
T- the value type- Parameters:
source- the sourceFlowableto usebufferFactory- the factory to instantiate the appropriate buffer when theFlowablebecomes active- Returns:
- the
ConnectableFlowableinstance
-
source
Description copied from interface:HasUpstreamPublisherReturns the source Publisher.This method is intended to discover the assembly graph of sequences.
- Specified by:
sourcein interfaceHasUpstreamPublisher<T>- Returns:
- the source Publisher
-
subscribeActual
Description copied from class:FlowableOperator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingSubscribers.There is no need to call any of the plugin hooks on the current
Flowableinstance or theSubscriber; all hooks and basic safeguards have been applied byFlowable.subscribe(Subscriber)before this method gets called.- Specified by:
subscribeActualin classFlowable<T>- Parameters:
s- the incomingSubscriber, nevernull
-
reset
public void reset()Description copied from class:ConnectableFlowableResets thisConnectableFlowableinto its fresh state if it has terminated.Calling this method on a fresh or active
ConnectableFlowablehas no effect.- Scheduler:
- The behavior is determined by the implementor of this abstract class.
- Specified by:
resetin classConnectableFlowable<T>
-
connect
Description copied from class:ConnectableFlowableInstructs theConnectableFlowableto begin emitting the items from its underlyingFlowableto itsSubscribers.- Scheduler:
- The behavior is determined by the implementor of this abstract class.
- Specified by:
connectin classConnectableFlowable<T>- Parameters:
connection- the action that receives the connection subscription before the subscription to source happens allowing the caller to synchronously disconnect a synchronous source- See Also:
-