You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
755 B

  1. package nova.monadic_sfx.util.reactive
  2. import scala.concurrent.Future
  3. import monix.execution.Ack
  4. import monix.execution.Cancelable
  5. import monix.reactive.Observable
  6. import monix.reactive.Observer
  7. import monix.reactive.observers.Subscriber
  8. object MonixProSubject {
  9. def from[I, O](
  10. observer: Observer[I],
  11. observable: Observable[O]
  12. ): MonixProSubject[I, O] =
  13. new Observable[O] with Observer[I] {
  14. override def onNext(elem: I): Future[Ack] = observer.onNext(elem)
  15. override def onError(ex: Throwable): Unit = observer.onError(ex)
  16. override def onComplete(): Unit = observer.onComplete()
  17. override def unsafeSubscribeFn(subscriber: Subscriber[O]): Cancelable =
  18. observable.unsafeSubscribeFn(subscriber)
  19. }
  20. }