0

Kotlin Code:

fun <T> Observable<T>.circuitBreaker(): Observable<T> {
  val relay = PublishRelay.create<T>()
  this.subscribe(relay)
  return relay.toFlowable(BackpressureStrategy.LATEST).toObservable()
}

Above is a Kotlin code which I'm trying to convert into Swift. But, I'm facing an error saying Cannot convert value of type 'PublishRelay' to expected argument type '(Event<_>) -> Void'

Swift Code:

extension Observable {
  func circuitBreaker<T>() -> Observable<T> {
    let relay = PublishRelay<T>()
    self.subscribe(relay)
    return relay.asObservable()
  }
}

Any help would be appreciated.

Indent
  • 4,675
  • 1
  • 19
  • 35
Dinesh Raja
  • 8,501
  • 5
  • 42
  • 81

2 Answers2

0

You cannot bind and Observable to Relay. See related discussion here.

Timofey Solonin
  • 1,393
  • 13
  • 20
0

I did it using below:

extension Observable {
  func circuitBreaker<T>() -> Observable<T> {
    let relay = PublishSubject<T>()
    _ = self.subscribe { (event: Event<Element>) in
      if let event = event as? Event<T> { relay.on(event) }
    }
    return relay.asObservable()
  }
}
Dinesh Raja
  • 8,501
  • 5
  • 42
  • 81