coroutine-utils: init

This commit is contained in:
Harsh Shandilya 2022-09-09 11:47:37 +05:30
parent 8986ad246a
commit 1db2f3256d
No known key found for this signature in database
3 changed files with 30 additions and 0 deletions

View file

@ -0,0 +1,9 @@
plugins {
kotlin("jvm")
id("dev.msfjarvis.claw.kotlin-library")
}
dependencies {
api(libs.kotlinx.coroutines.core)
implementation(libs.dagger.hilt.core)
}

View file

@ -0,0 +1,20 @@
package dev.msfjarvis.claw.util.coroutines
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
/** Interface to allow abstracting individual [CoroutineDispatcher]s out of class dependencies. */
@OptIn(ExperimentalCoroutinesApi::class)
interface DispatcherProvider {
fun main(): CoroutineDispatcher = Dispatchers.Main
fun default(): CoroutineDispatcher = Dispatchers.Default
fun io(): CoroutineDispatcher = Dispatchers.IO
fun unconfined(): CoroutineDispatcher = Dispatchers.Unconfined
fun database(): CoroutineDispatcher = Dispatchers.IO.limitedParallelism(1)
}
/** Concrete type for [DispatcherProvider] with all the defaults from the class. */
class DefaultDispatcherProvider @Inject constructor() : DispatcherProvider

View file

@ -106,6 +106,7 @@ include(
"api", "api",
"benchmark", "benchmark",
"common", "common",
"coroutine-utils",
"database", "database",
"metadata-extractor", "metadata-extractor",
"model", "model",