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 class
Base 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 class
A Disposable that manages the disposed state of a child Observer in thread-safe manner.(package private) static final class
(package private) static final class
Represents a node in a bounded replay buffer's linked list.(package private) static interface
The 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 class
Size and time bound replay buffer.(package private) static final class
A bounded replay buffer implementation with size limit only.(package private) static final class
(package private) static final class
Holds 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
ConstructorsModifierConstructorDescriptionprivate
ObservableReplay
(ObservableSource<T> onSubscribe, ObservableSource<T> source, AtomicReference<ObservableReplay.ReplayObserver<T>> current, ObservableReplay.BufferSupplier<T> bufferFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoid
connect
(Consumer<? super Disposable> connection) Instructs theConnectableObservable
to begin emitting the items from its underlyingObservable
to itsObserver
s.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.void
reset()
Resets thisConnectableObservable
into its fresh state if it has terminated or has been disposed.source()
Returns the upstream source of this Observable.protected void
subscribeActual
(Observer<? super T> observer) Operator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingObserver
s.Methods inherited from class io.reactivex.rxjava3.observables.ConnectableObservable
autoConnect, autoConnect, autoConnect, connect, refCount, refCount, refCount, refCount, refCount, refCount
Methods 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:HasUpstreamObservableSource
Returns the upstream source of this Observable.Allows discovering the chain of observables.
- Specified by:
source
in interfaceHasUpstreamObservableSource<T>
- Returns:
- the source ObservableSource
-
reset
public void reset()Description copied from class:ConnectableObservable
Resets thisConnectableObservable
into its fresh state if it has terminated or has been disposed.Calling this method on a fresh or active
ConnectableObservable
has no effect.- Scheduler:
- The behavior is determined by the implementor of this abstract class.
- Specified by:
reset
in classConnectableObservable<T>
-
subscribeActual
Description copied from class:Observable
Operator implementations (both source and intermediate) should implement this method that performs the necessary business logic and handles the incomingObserver
s.There is no need to call any of the plugin hooks on the current
Observable
instance or theObserver
; all hooks and basic safeguards have been applied byObservable.subscribe(Observer)
before this method gets called.- Specified by:
subscribeActual
in classObservable<T>
- Parameters:
observer
- the incomingObserver
, nevernull
-
connect
Description copied from class:ConnectableObservable
Instructs theConnectableObservable
to begin emitting the items from its underlyingObservable
to itsObserver
s.- Scheduler:
- The behavior is determined by the implementor of this abstract class.
- Specified by:
connect
in 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:
-