T
- the type of the items to be bufferedpublic 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 GroupedObservable
s, 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<T> |
create() |
void |
onCompleted()
Notifies the Observer that the
Observable has finished sending push-based notifications. |
void |
onError(java.lang.Throwable e)
Notifies the Observer that the
Observable has experienced an error condition. |
void |
onNext(T t)
Provides the Observer with a new item to observe.
|
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, cast, collect, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, compose, concat, concat, concat, concat, concat, concat, concat, concat, concat, concatMap, concatWith, contains, count, create, debounce, debounce, debounce, defaultIfEmpty, defer, delay, delay, delay, delay, delaySubscription, delaySubscription, dematerialize, distinct, distinct, distinctUntilChanged, distinctUntilChanged, doOnCompleted, doOnEach, doOnEach, doOnError, doOnNext, doOnSubscribe, doOnTerminate, doOnUnsubscribe, elementAt, elementAtOrDefault, empty, error, exists, filter, finallyDo, first, first, firstOrDefault, firstOrDefault, flatMap, flatMap, flatMap, flatMapIterable, flatMapIterable, forEach, forEach, forEach, from, from, from, from, from, groupBy, groupBy, groupByUntil, groupByUntil, groupJoin, ignoreElements, interval, interval, isEmpty, join, just, just, just, just, just, just, just, just, just, just, last, last, lastOrDefault, lastOrDefault, lift, limit, longCount, map, materialize, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, merge, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeWith, multicast, multicast, nest, never, observeOn, ofType, onBackpressureBuffer, onBackpressureDrop, onErrorResumeNext, onErrorResumeNext, onErrorReturn, onExceptionResumeNext, publish, publish, publish, publish, publishLast, publishLast, 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, skipWhileWithIndex, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, subscribe, subscribe, subscribe, subscribe, subscribe, subscribe, subscribeOn, switchMap, switchOnNext, take, take, take, takeFirst, takeLast, takeLast, takeLast, takeLast, takeLast, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeLastBuffer, takeUntil, takeWhile, takeWhileWithIndex, 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, toSortedList, toSortedList, unsafeSubscribe, unsubscribeOn, using, window, window, window, window, window, window, window, window, window, window, window, window, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWith
public 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.onError(java.lang.Throwable)
.
public void onError(java.lang.Throwable e)
Observer
Observable
has experienced an error condition.
If the Observable
calls this method, it will not thereafter call Observer.onNext(T)
or
Observer.onCompleted()
.
e
- the exception encountered by the Observablepublic void onNext(T t)
Observer
The Observable
may call this closure 0 or more times.
The Observable
will not call this closure again after it calls either Observer.onCompleted()
or
Observer.onError(java.lang.Throwable)
.
t
- the item emitted by the Observable