Class BufferUntilSubscriber<T>
- java.lang.Object
-
- rx.Observable<R>
-
- rx.subjects.Subject<T,T>
-
- rx.internal.operators.BufferUntilSubscriber<T>
-
- Type Parameters:
T- the type of the items to be buffered
- All Implemented Interfaces:
Observer<T>
public final class BufferUntilSubscriber<T> extends Subject<T,T>
A solution to the "time gap" problem that occurs withgroupByandpivot.This currently has temporary unbounded buffers. It needs to become bounded and then do one of two things:
- blow up and make the user do something about it
- work with the backpressure solution ... still to be implemented (such as co-routines)
Generally the buffer should be very short lived (milliseconds) and then stops being involved. It can become a memory leak though if a
GroupedObservablebacked by this class is emitted but never subscribed to (such as filtered out). In that case, either a time-bomb to throw away the buffer, or just blowing up and making the user do something about it is needed.For example, to filter out
GroupedObservables, perhaps they need a silentsubscribe()on them to just blackhole the data.This is an initial start at solving this problem and solves the immediate problem of
groupByandpivotand trades off the possibility of memory leak for deterministic functionality.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classBufferUntilSubscriber.OnSubscribeAction<T>(package private) static classBufferUntilSubscriber.State<T>The common state.-
Nested classes/interfaces inherited from class rx.Observable
Observable.OnSubscribe<T>, Observable.Operator<R,T>, Observable.Transformer<T,R>
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static ObserverEMPTY_OBSERVERprivate booleanforward(package private) BufferUntilSubscriber.State<T>state
-
Constructor Summary
Constructors Modifier Constructor Description privateBufferUntilSubscriber(BufferUntilSubscriber.State<T> state)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <T> BufferUntilSubscriber<T>create()Creates a default, unbounded buffering Subject instance.private voidemit(java.lang.Object v)booleanhasObservers()voidonCompleted()Notifies the Observer that theObservablehas finished sending push-based notifications.voidonError(java.lang.Throwable e)Notifies the Observer that theObservablehas experienced an error condition.voidonNext(T t)Provides the Observer with a new item to observe.-
Methods inherited from class rx.subjects.Subject
toSerialized
-
Methods inherited from class rx.Observable
all, amb, amb, amb, amb, amb, amb, amb, amb, amb, ambWith, asObservable, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, cache, cache, cacheWithInitialCapacity, cast, collect, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatestDelayError, compose, concat, concat, concat, concat, concat, concat, concat, concat, concat, concatDelayError, concatDelayError, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatMap, concatMapDelayError, concatMapEager, concatMapEager, concatMapEager, concatMapIterable, concatWith, contains, count, countLong, create, create, create, debounce, debounce, debounce, defaultIfEmpty, defer, delay, delay, delay, delay, delaySubscription, delaySubscription, delaySubscription, delaySubscription, dematerialize, distinct, distinct, distinctUntilChanged, distinctUntilChanged, distinctUntilChanged, doAfterTerminate, doOnCompleted, doOnEach, doOnEach, doOnError, doOnNext, doOnRequest, doOnSubscribe, doOnTerminate, doOnUnsubscribe, elementAt, elementAtOrDefault, empty, error, exists, extend, filter, finallyDo, first, first, firstOrDefault, firstOrDefault, flatMap, flatMap, flatMap, flatMap, flatMap, flatMap, flatMapIterable, flatMapIterable, flatMapIterable, flatMapIterable, forEach, forEach, forEach, from, from, from, from, from, fromAsync, fromCallable, groupBy, groupBy, groupBy, groupJoin, ignoreElements, interval, interval, interval, interval, isEmpty, join, just, just, just, just, just, just, just, just, just, just, last, last, lastOrDefault, lastOrDefault, lift, limit, map, materialize, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeWith, nest, never, observeOn, observeOn, observeOn, observeOn, ofType, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureDrop, onBackpressureDrop, onBackpressureLatest, onErrorResumeNext, onErrorResumeNext, onErrorReturn, onExceptionResumeNext, onTerminateDetach, publish, publish, range, range, rebatchRequests, reduce, reduce, repeat, repeat, repeat, repeat, repeatWhen, repeatWhen, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, replay, retry, retry, retry, retryWhen, retryWhen, sample, sample, sample, scan, scan, sequenceEqual, sequenceEqual, serialize, share, single, single, singleOrDefault, singleOrDefault, skip, skip, skip, skipLast, skipLast, skipLast, skipUntil, skipWhile, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, subscribe, subscribe, subscribe, subscribe, subscribe, subscribe, subscribeOn, switchIfEmpty, switchMap, switchMapDelayError, switchOnNext, switchOnNextDelayError, take, take, take, takeFirst, takeLast, takeLast, takeLast, takeLast, takeLast, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeUntil, takeUntil, takeWhile, throttleFirst, throttleFirst, throttleLast, throttleLast, throttleWithTimeout, throttleWithTimeout, timeInterval, timeInterval, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timer, timer, timer, timer, timestamp, timestamp, toBlocking, toCompletable, toList, toMap, toMap, toMap, toMultimap, toMultimap, toMultimap, toMultimap, toSingle, toSortedList, toSortedList, toSortedList, toSortedList, unsafeSubscribe, unsubscribeOn, using, using, window, window, window, window, window, window, window, window, window, window, window, window, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, withLatestFrom, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWith
-
-
-
-
Field Detail
-
state
final BufferUntilSubscriber.State<T> state
-
forward
private boolean forward
-
EMPTY_OBSERVER
static final Observer EMPTY_OBSERVER
-
-
Constructor Detail
-
BufferUntilSubscriber
private BufferUntilSubscriber(BufferUntilSubscriber.State<T> state)
-
-
Method Detail
-
create
public static <T> BufferUntilSubscriber<T> create()
Creates a default, unbounded buffering Subject instance.- Type Parameters:
T- the value type- Returns:
- the instance
-
emit
private void emit(java.lang.Object v)
-
onCompleted
public void onCompleted()
Description copied from interface:ObserverNotifies the Observer that theObservablehas finished sending push-based notifications.The
Observablewill not call this method if it callsObserver.onError(java.lang.Throwable).
-
onError
public void onError(java.lang.Throwable e)
Description copied from interface:ObserverNotifies the Observer that theObservablehas experienced an error condition.If the
Observablecalls this method, it will not thereafter callObserver.onNext(T)orObserver.onCompleted().- Parameters:
e- the exception encountered by the Observable
-
onNext
public void onNext(T t)
Description copied from interface:ObserverProvides the Observer with a new item to observe.The
Observablemay call this method 0 or more times.The
Observablewill not call this method again after it calls eitherObserver.onCompleted()orObserver.onError(java.lang.Throwable).- Parameters:
t- the item emitted by the Observable
-
hasObservers
public boolean hasObservers()
Description copied from class:Subject- Specified by:
hasObserversin classSubject<T,T>- Returns:
- true if there is at least one Observer subscribed to this Subject, false otherwise
-
-