0

I'm using refCount to hold onto a BLE connection for 5 mins. This works well until I have a connection issue, refCount still keeps the connection and replay replays the error.

Is there a way I can make either make refCount disconnect as soon as there is an error, or make replay not replay errors?

        bleDevice
            .establishConnection(false)
            .replay(1)
            .refCount(1, 5, TimeUnit.MINUTES)
RefuX
  • 490
  • 5
  • 11

1 Answers1

1

The easy way to achieve what you want is by using RxJava 3 refCount operator. You can use an RxJava 2 <=> 3 interoperability library RxJavaBridge.

val connectionObservable = bleDevice
    .establishConnection(false)
    .`as`(RxJavaBridge.toV3Observable())
    .replay(1)
    .refCount(1, 5, TimeUnit.MINUTES)
    .to(RxJavaBridge.toV2Observable()) // optional if you want to stick to RxJava 3
Dariusz Seweryn
  • 3,212
  • 2
  • 14
  • 21