Class ObservableReplay<T>
java.lang.Object
io.reactivex.rxjava3.core.Observable<T>
io.reactivex.rxjava3.observables.ConnectableObservable<T>
io.reactivex.rxjava3.internal.operators.observable.ObservableReplay<T>
- All Implemented Interfaces:
ObservableSource<T>,HasUpstreamObservableSource<T>
public final class ObservableReplay<T>
extends ConnectableObservable<T>
implements HasUpstreamObservableSource<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 interface(package private) static final class(package private) static final classA Disposable that manages the disposed state of a child Observer 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 class(package private) static final classHolds an unbounded list of events. -
Field Summary
FieldsModifier and TypeFieldDescription(package private) final ObservableReplay.BufferSupplier<T> A factory that creates the appropriate buffer for the ReplayObserver.(package private) final AtomicReference<ObservableReplay.ReplayObserver<T>> Holds the current subscriber that is, will be or just was subscribed to the source observable.(package private) static final ObservableReplay.BufferSupplier(package private) final ObservableSource<T> (package private) final ObservableSource<T> The source observable. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateObservableReplay(ObservableSource<T> onSubscribe, ObservableSource<T> source, AtomicReference<ObservableReplay.ReplayObserver<T>> current, ObservableReplay.BufferSupplier<T> bufferFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoidconnect(Consumer<? super Disposable> connection) Instructs theConnectableObservableto begin emitting the items from its underlyingObservableto itsObservers.static <T> ConnectableObservable<T> create(ObservableSource<T> source, int bufferSize, boolean eagerTruncate) Creates a replaying ConnectableObservable with a size bound buffer.static <T> ConnectableObservable<T> create(ObservableSource<T> source, long maxAge, TimeUnit unit, Scheduler scheduler, boolean eagerTruncate) Creates a replaying ConnectableObservable with a time bound buffer.static <T> ConnectableObservable<T> create(ObservableSource<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> ConnectableObservable<T> create(ObservableSource<T> source, ObservableReplay.BufferSupplier<T> bufferFactory) Creates a OperatorReplay instance to replay values of the given source observable.static <T> ConnectableObservable<T> createFrom(ObservableSource<? extends T> source) Creates a replaying ConnectableObservable with an unbounded buffer.static <U,R> Observable <R> multicastSelector(Supplier<? extends ConnectableObservable<U>> connectableFactory, Function<? super Observable<U>, ? extends ObservableSource<R>> selector) Given a connectable observable factory, it multicasts over the generated ConnectableObservable via a selector function.voidreset()Resets thisConnectableObservableinto its fresh state if it has terminated or has been disposed.source()Returns the upstream source of this Observable.protected voidsubscribeActual(Observer<? super T> observer) Operator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingObservers.Methods inherited from class io.reactivex.rxjava3.observables.ConnectableObservable
autoConnect, autoConnect, autoConnect, connect, refCount, refCount, refCount, refCount, refCount, refCountMethods inherited from class io.reactivex.rxjava3.core.Observable
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, 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, concatMapMaybe, concatMapMaybe, concatMapMaybeDelayError, concatMapMaybeDelayError, concatMapMaybeDelayError, concatMapSingle, concatMapSingle, concatMapSingleDelayError, concatMapSingleDelayError, concatMapSingleDelayError, 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, doOnComplete, doOnDispose, doOnEach, doOnEach, doOnError, doOnLifecycle, doOnNext, 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, flatMapMaybe, flatMapMaybe, flatMapSingle, flatMapSingle, flatMapStream, forEach, forEachWhile, forEachWhile, forEachWhile, fromAction, fromArray, fromCallable, fromCompletable, fromCompletionStage, fromFuture, fromFuture, fromIterable, fromMaybe, fromOptional, fromPublisher, fromRunnable, fromSingle, fromStream, fromSupplier, generate, generate, generate, generate, generate, 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, onErrorComplete, onErrorComplete, onErrorResumeNext, onErrorResumeWith, onErrorReturn, onErrorReturnItem, onTerminateDetach, publish, publish, range, rangeLong, 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, 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, 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, toFlowable, toFuture, toList, toList, toList, toMap, toMap, toMap, toMultimap, toMultimap, toMultimap, toMultimap, 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, wrap, 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 ReplayObserver. -
onSubscribe
-
DEFAULT_UNBOUNDED_FACTORY
-
-
Constructor Details
-
ObservableReplay
private ObservableReplay(ObservableSource<T> onSubscribe, ObservableSource<T> source, AtomicReference<ObservableReplay.ReplayObserver<T>> current, ObservableReplay.BufferSupplier<T> bufferFactory)
-
-
Method Details
-
multicastSelector
public static <U,R> Observable<R> multicastSelector(Supplier<? extends ConnectableObservable<U>> connectableFactory, Function<? super Observable<U>, ? extends ObservableSource<R>> selector) Given a connectable observable factory, it multicasts over the generated ConnectableObservable via a selector function.- Type Parameters:
U- the value type of the ConnectableObservableR- the result value type- Parameters:
connectableFactory- the factory that returns a ConnectableObservable for each individual subscriberselector- the function that receives an Observable and should return another Observable 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 observable- Returns:
- the new ConnectableObservable instance
-
create
public static <T> ConnectableObservable<T> create(ObservableSource<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 ObservableSource 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> ConnectableObservable<T> create(ObservableSource<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 ObservableSource 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> ConnectableObservable<T> create(ObservableSource<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 ObservableSource 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 ConnectableObservable instance
-
create
static <T> ConnectableObservable<T> create(ObservableSource<T> source, ObservableReplay.BufferSupplier<T> bufferFactory) Creates a OperatorReplay instance to replay values of the given source observable.- Type Parameters:
T- the value type- Parameters:
source- the source observablebufferFactory- the factory to instantiate the appropriate buffer when the observable becomes active- Returns:
- the connectable observable
-
source
Description copied from interface:HasUpstreamObservableSourceReturns the upstream source of this Observable.Allows discovering the chain of observables.
- Specified by:
sourcein interfaceHasUpstreamObservableSource<T>- Returns:
- the source ObservableSource
-
reset
public void reset()Description copied from class:ConnectableObservableResets thisConnectableObservableinto its fresh state if it has terminated or has been disposed.Calling this method on a fresh or active
ConnectableObservablehas no effect.- Scheduler:
- The behavior is determined by the implementor of this abstract class.
- Specified by:
resetin classConnectableObservable<T>
-
subscribeActual
Description copied from class:ObservableOperator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingObservers.There is no need to call any of the plugin hooks on the current
Observableinstance or theObserver; all hooks and basic safeguards have been applied byObservable.subscribe(Observer)before this method gets called.- Specified by:
subscribeActualin classObservable<T>- Parameters:
observer- the incomingObserver, nevernull
-
connect
Description copied from class:ConnectableObservableInstructs theConnectableObservableto begin emitting the items from its underlyingObservableto itsObservers.- Scheduler:
- The behavior is determined by the implementor of this abstract class.
- Specified by:
connectin classConnectableObservable<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:
-