Skip to content

Instantly share code, notes, and snippets.

@ookami-kb
Last active May 10, 2016 21:56
Show Gist options
  • Save ookami-kb/f0a1f24abb5963dce66e4d4aff552123 to your computer and use it in GitHub Desktop.
Save ookami-kb/f0a1f24abb5963dce66e4d4aff552123 to your computer and use it in GitHub Desktop.
// inspired by http://www.andreamaglie.com/rxjava-listener-to-observable/
interface ValueUpdateListener {
fun onValueChanged(value: String)
}
class ValueUpdater {
fun registerListener(listener: ValueUpdateListener) {
// ...
}
fun unregisterListener(listener: ValueUpdateListener) {
// ...
}
}
fun observableWrapper(): Observable<String> {
return observable<String> {
subscriber ->
val listener = object : ValueUpdateListener {
override fun onValueChanged(value: String) {
if (subscriber.isUnsubscribed) {
valueUpdater.unregisterListener(this)
} else {
subscriber.onNext(value)
}
}
}
valueUpdater.registerListener(listener)
}
}
observableWrapper().subscribe {
// do smth with value
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment