T - the type of the items to be buffered
public final class BufferUntilSubscriber<T> extends Subject<T ,T>
groupBy and
pivot.
This currently has temporary unbounded buffers. It needs to become bounded and then do one of two things:
Generally the buffer should be very short lived (milliseconds) and then stops being involved. It can become a memory leak though if a GroupedObservable backed 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 silent subscribe() on them to just blackhole the data.
This is an initial start at solving this problem and solves the immediate problem of groupBy and pivot and trades off the possibility of memory leak for deterministic functionality.
Observable.OnSubscribe <T>, Observable.Operator <R,T>, Observable.Transformer <T,R> | Modifier and Type | Method and Description |
|---|---|
static <T> BufferUntilSubscriber |
create()
|
boolean |
hasObservers()
|
void |
onCompleted()
Notifies the Observer that the
Observable has finished sending push-based notifications.
|
void |
onError(Throwable
Notifies the Observer that the
Observable has experienced an error condition.
|
void |
onNext(T t)
Provides the Observer with a new item to observe.
|
toSerializedall, 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, cast, collect, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, compose, concat, concat, concat, concat, concat, concat, concat, concat, concat, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatEager, concatMap, concatMapEager, concatMapEager, concatWith, contains, count, countLong, create, debounce, debounce, debounce, defaultIfEmpty, defer, delay, delay, delay, delay, delaySubscription, delaySubscription, delaySubscription, dematerialize, distinct, distinct, distinctUntilChanged, distinctUntilChanged, 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, forEach, forEach, forEach, from, from, from, from, from, fromCallable, 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, mergeWith, nest, never, observeOn, ofType, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureDrop, onBackpressureDrop, onBackpressureLatest, onErrorResumeNext, onErrorResumeNext, onErrorReturn, onExceptionResumeNext, publish, publish, range, range, 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, switchOnNext, 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, 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, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWithpublic static <T> BufferUntilSubscriber<T> create()
public void onCompleted()
Observer
Observable has finished sending push-based notifications.
The Observable will not call this method if it calls Observer.
public void onError(Throwablee)
Observer
Observable has experienced an error condition.
If the Observable calls this method, it will not thereafter call Observer or Observer.
e - the exception encountered by the Observable
public void onNext(T t)
Observer
The Observable may call this method 0 or more times.
The Observable will not call this method again after it calls either Observer or Observer.
t - the item emitted by the Observable
public boolean hasObservers()
Subject
hasObservers in class
Subject<T,T>