BlueFlow icon indicating copy to clipboard operation
BlueFlow copied to clipboard

bt socket closed, read return: -1, but then emission attempt has been detected

Open picobulgarelli opened this issue 4 years ago • 2 comments

If I turn off the connected device I receive this error and I don't receive the "Disconnected" message.

Complete error from your sample:

E/AndroidRuntime: FATAL EXCEPTION: main Process: io.github.thanosfisherman.blueflow.sample, PID: 12390 java.lang.IllegalStateException: Flow exception transparency is violated: Previous 'emit' call has thrown exception java.io.IOException: bt socket closed, read return: -1, but then emission attempt of value 'io.github.thanosfisherman.blueflow.sample.BtConnection$BtErrorConnectingState@cb152e5' has been detected. Emissions from 'catch' blocks are prohibited in order to avoid unspecified behaviour, 'Flow.catch' operator can be used instead. For a more detailed explanation, please refer to Flow documentation. at kotlinx.coroutines.flow.internal.SafeCollector.exceptionTransparencyViolated(SafeCollector.kt:114) at kotlinx.coroutines.flow.internal.SafeCollector.checkContext(SafeCollector.kt:82) at kotlinx.coroutines.flow.internal.SafeCollector.emit(SafeCollector.kt:70) at kotlinx.coroutines.flow.internal.SafeCollector.emit(SafeCollector.kt:55) at io.github.thanosfisherman.blueflow.sample.usecase.BtConnectUseCase$connect$1.invokeSuspend(BtConnectUseCase.kt:19) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7399) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:502) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

It would be nice if you can also provide a sample to receive/send data using the mvvm architecture.

picobulgarelli avatar Jan 28 '21 11:01 picobulgarelli

I've never encountered this issue before with my Bluetooth devices. Thanks for reporting this I will have a look.

ThanosFisherman avatar Jan 30 '21 18:01 ThanosFisherman

BtDisconnectedState is never set or did I miss something? I'm also wondering how to distinguish between an error and an intended disconnect and how to disconnect friendly? Unfortunately your sample does not cover this.

WebTiger89 avatar Mar 05 '21 19:03 WebTiger89