arekolek
val isRead = AtomicBoolean(false) val testObservable = Maybe.fromCallable { true.takeUnless { isRead.getAndSet(true) } }.toObservable()
filipradon
class ColdObservableSingleSubscriberProxy<T>(val value: T) { private var hasBeenSubscribed = false fun getObservable(): Observable<T> = if (hasBeenSubscribed) { Observable.never<T>() } else { hasBeenSubscribed = true Observable.just(value) } }
if
getObservable()
reline
fun <T> Observable<T>.toColdSingleSubscribeable(): Observable<T> { return ColdObservableSingleSubscriberProxy(this) } class ColdObservableSingleSubscriberProxy<T>(private val observable: Observable<T>) : Observable<T>() { private val hasBeenSubscribed = AtomicBoolean(false) override fun subscribeActual(observer: Observer<in T>) { if (hasBeenSubscribed.compareAndSet(false, true)) { observable.subscribe(observer) } else { never<T>().subscribe(observer) } } }
false
isDisposed
empty()
never()
A modern programming language that makes developers happier.