
com.noheltcj.rxcommon.observables.Single.kt Maven / Gradle / Ivy
package com.noheltcj.rxcommon.observables
import com.noheltcj.rxcommon.Source
import com.noheltcj.rxcommon.disposables.Disposable
import com.noheltcj.rxcommon.disposables.Disposables
import com.noheltcj.rxcommon.emitters.SingleEmitter
import com.noheltcj.rxcommon.observers.Observer
open class Single() : Source {
private var disposable: Disposable? = null
private val emitter = SingleEmitter {
disposable?.dispose()
}
constructor(createWithEmitter : (SingleEmitter) -> Disposable) : this() {
disposable = createWithEmitter(emitter)
if (emitter.isDisposed) {
disposable?.dispose()
}
}
constructor(just: E) : this() {
emitter.next(just)
}
constructor(error: Throwable) : this() {
emitter.terminate(error)
}
override fun subscribe(observer: Observer) : Disposable {
emitter.addObserver(observer)
return Disposables.create {
emitter.removeObserver(observer)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy