Skip to content
Snippets Groups Projects
Commit 9bff6778 authored by William Walker's avatar William Walker
Browse files

Move dispatcher definition back to common code

parent 6748b299
No related branches found
No related tags found
No related merge requests found
......@@ -17,17 +17,12 @@
*/
package edu.ucsc.its.temerity.di
import edu.ucsc.its.temerity.extensions.coroutines.createDispatcher
import io.ktor.client.engine.android.Android
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import org.koin.core.qualifier.named
import org.koin.dsl.module
internal actual fun platformModule() = module {
single(named("libraryCoroutineDispatcher")) { (threadCount: Int, dispatcherName: String) ->
createDispatcher(Dispatchers.IO, threadCount, dispatcherName)
}
single(named("httpClientEngine")) { (libraryCoroutineDispatcher: CoroutineDispatcher) ->
Android.create {
dispatcher = libraryCoroutineDispatcher
......
......@@ -69,6 +69,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
import kotlinx.datetime.DateTimeUnit
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalTime
......@@ -89,11 +90,11 @@ import org.koin.core.logger.Level.WARNING
import org.koin.core.logger.Logger
import org.koin.core.logger.MESSAGE
import org.koin.core.parameter.parametersOf
import org.koin.core.qualifier.named
import org.koin.dsl.koinApplication
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
import kotlin.time.DurationUnit.MILLISECONDS
import org.koin.core.qualifier.named
import co.touchlab.kermit.Logger as KermitLogger
import io.ktor.client.plugins.logging.Logger as KtorLogger
......@@ -115,16 +116,16 @@ public class Temerity internal constructor(
// TODO: Use this as cache4k expiration time
public val DEFAULT_CACHE_EXPIRATION: Duration = 15.minutes
internal const val DEFAULT_MINIMUM_THREAD_COUNT: Int = 2
@JvmStatic
internal fun createLogger(
tag: String?,
config: TemClientConfig?,
supportKtxNotebook: Boolean
supportKtxNotebook: Boolean,
): KermitLogger = LoggerFactory.createLogger(
tag = tag,
config = config,
supportKtxNotebook = supportKtxNotebook
supportKtxNotebook = supportKtxNotebook,
)
@JvmStatic
......@@ -170,7 +171,7 @@ public class Temerity internal constructor(
}
override val version: String = BuildConfig.LIB_VERSION
/**
* Kotlinx-serialization [Json] encoder/decoder object used for serializing/deserializing JSON object responses
*/
......@@ -253,9 +254,9 @@ public class Temerity internal constructor(
}
}
public override suspend fun getUsers(): List<User> {
public override suspend fun getUsers(): List<User> = withContext(libraryCoroutineDispatcher) {
val userRequest = platformApi.getUsers()
return decodeResponseCatching(userRequest.executeApiResponse<String>())
decodeResponseCatching(userRequest.executeApiResponse<String>())
}
public override suspend fun getUser(userId: Long): User =
......
......@@ -24,16 +24,17 @@ import edu.ucsc.its.temerity.api.PlatformApi
import edu.ucsc.its.temerity.api.createPlatformApi
import edu.ucsc.its.temerity.core.buildHttpClient
import edu.ucsc.its.temerity.core.createCommonLogger
import edu.ucsc.its.temerity.extensions.coroutines.createDispatcher
import edu.ucsc.its.temerity.extensions.coroutines.createLibraryScope
import io.ktor.client.HttpClient
import io.ktor.client.engine.HttpClientEngine
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import org.koin.core.parameter.parametersOf
import org.koin.core.qualifier.named
import org.koin.dsl.module
import co.touchlab.kermit.Logger as KermitLogger
internal object LibModule {
/**
* This function provides the Koin module for the Temerity library.
......@@ -43,6 +44,9 @@ internal object LibModule {
single(named("libraryLogger")) { (tag: String?, config: TemClientConfig?) ->
createCommonLogger(tag = tag, config = config)
}
single(named("libraryCoroutineDispatcher")) { (threadCount: Int, dispatcherName: String) ->
createDispatcher(Dispatchers.IO, threadCount, dispatcherName)
}
single(named("libraryCoroutineScope")) { (dispatcher: CoroutineDispatcher) ->
createLibraryScope(dispatcher)
}
......
......@@ -17,17 +17,12 @@
*/
package edu.ucsc.its.temerity.di
import edu.ucsc.its.temerity.extensions.coroutines.createDispatcher
import io.ktor.client.engine.java.Java
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import org.koin.core.qualifier.named
import org.koin.dsl.module
internal actual fun platformModule() = module {
single(named("libraryCoroutineDispatcher")) { (threadCount: Int, dispatcherName: String) ->
createDispatcher(Dispatchers.IO, threadCount, dispatcherName)
}
factory(named("httpClientEngine")) { (libraryCoroutineDispatcher: CoroutineDispatcher) ->
Java.create {
dispatcher = libraryCoroutineDispatcher
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment