public final class UnicastAutoReleaseSubject<T> extends Subject<T,T>
This Subject can be used to auto-release reference counted objects when not subscribed before.
The implementation is originally based on a Subject in RxNetty, but adapted to fit the needs of the core. For example it does not always do auto releasing which is something that can clash with proper subscribers and as a result it never increases the reference count of the ref counted object.
While this subject can also be used with non reference counted objects it doesn’t make much sense since they can properly be garbage collected by the JVM and do not leak.
Observable.OnSubscribe<T>, Observable.Operator<R,T>, Observable.Transformer<T,R>
Modifier and Type | Method and Description |
---|---|
static <T> UnicastAutoReleaseSubject<T> |
create(long noSubscriptionTimeout,
TimeUnit timeUnit) |
static <T> UnicastAutoReleaseSubject<T> |
create(long noSubscriptionTimeout,
TimeUnit timeUnit,
Action0 onUnsubscribe) |
static <T> UnicastAutoReleaseSubject<T> |
create(long noSubscriptionTimeout,
TimeUnit timeUnit,
Scheduler timeoutScheduler) |
static <T> UnicastAutoReleaseSubject<T> |
create(long noSubscriptionTimeout,
TimeUnit timeUnit,
Scheduler timeoutScheduler,
Action0 onUnsubscribe) |
static <T> UnicastAutoReleaseSubject<T> |
createWithoutNoSubscriptionTimeout()
Creates a new
UnicastAutoReleaseSubject without a no subscription timeout. |
static <T> UnicastAutoReleaseSubject<T> |
createWithoutNoSubscriptionTimeout(Action0 onUnsubscribe)
Creates a new
UnicastAutoReleaseSubject without a no subscription timeout. |
boolean |
disposeIfNotSubscribed()
This will eagerly dispose this
Subject without waiting for the no subscription timeout period, if configured. |
boolean |
hasObservers() |
void |
onCompleted() |
void |
onError(Throwable e) |
void |
onNext(T t) |
toSerialized
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, 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, 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, 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, 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, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWith
public static <T> UnicastAutoReleaseSubject<T> createWithoutNoSubscriptionTimeout(Action0 onUnsubscribe)
Creates a new UnicastAutoReleaseSubject
without a no subscription timeout. This can cause a memory leak in case no one ever subscribes to this subject. See UnicastAutoReleaseSubject
for details.
onUnsubscribe
- An action to be invoked when the sole subscriber to this Subject
unsubscribes.T
- The type emitted and received by this subject.UnicastAutoReleaseSubject
public static <T> UnicastAutoReleaseSubject<T> createWithoutNoSubscriptionTimeout()
Creates a new UnicastAutoReleaseSubject
without a no subscription timeout. This can cause a memory leak in case no one ever subscribes to this subject. See UnicastAutoReleaseSubject
for details.
T
- The type emitted and received by this subject.UnicastAutoReleaseSubject
public static <T> UnicastAutoReleaseSubject<T> create(long noSubscriptionTimeout, TimeUnit timeUnit)
public static <T> UnicastAutoReleaseSubject<T> create(long noSubscriptionTimeout, TimeUnit timeUnit, Action0 onUnsubscribe)
public static <T> UnicastAutoReleaseSubject<T> create(long noSubscriptionTimeout, TimeUnit timeUnit, Scheduler timeoutScheduler)
public static <T> UnicastAutoReleaseSubject<T> create(long noSubscriptionTimeout, TimeUnit timeUnit, Scheduler timeoutScheduler, Action0 onUnsubscribe)
public boolean disposeIfNotSubscribed()
This will eagerly dispose this Subject
without waiting for the no subscription timeout period, if configured.
This must be invoked when the caller is sure that no one will subscribe to this subject. Any subscriber after this call will receive an error that the subject is disposed.
true
if the subject was disposed by this call (if and only if there was no subscription).public void onCompleted()
public void onError(Throwable e)
public void onNext(T t)
public boolean hasObservers()
hasObservers
in class Subject<T,T>
Copyright © 2016 Couchbase, Inc.. All rights reserved.