zcash-android-wallet-sdk/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/SdkDispatchers.kt

33 lines
1.1 KiB
Kotlin

package cash.z.ecc.android.sdk.internal
import kotlinx.coroutines.asCoroutineDispatcher
import java.util.concurrent.Executors
internal object SdkExecutors {
/**
* Executor used for database IO that's shared with the Rust native library.
*/
/*
* Based on internal discussion, keep the SDK internals confined to a single IO thread.
*
* We don't expect things to break, but we don't have the WAL enabled for SQLite so this
* is a simple solution.
*/
val DATABASE_IO = Executors.newSingleThreadExecutor()
}
object SdkDispatchers {
/**
* Dispatcher used for database IO that's shared with the Rust native library.
*/
/*
* Based on internal discussion, keep the SDK internals confined to a single IO thread.
*
* We don't expect things to break, but we don't have the WAL enabled for SQLite so this
* is a simple solution.
*/
// Don't use `Dispatchers.IO.limitedParallelism(1)`.
// While it executes serially, each dispatch can be on a different thread.
val DATABASE_IO = SdkExecutors.DATABASE_IO.asCoroutineDispatcher()
}