Limit CronetEngine to use 1 thread since we are totally async & non-blocking

This commit is contained in:
GG Bond authored and Vladimir Dostoyevskiy committed 2023-12-03 11:57:40 +08:00
1 parent b094a32d12
commit f6028813e2
3 files changed
+7 -1

No files matched your search

@@ -1,5 +1,6 @@
package com.hippo.ehviewer.ktor
import com.hippo.ehviewer.cronet.cronetDispatcher
import com.hippo.ehviewer.cronet.cronetHttpClient
import com.hippo.ehviewer.cronet.cronetHttpClientExecutor
import com.hippo.ehviewer.cronet.pool
@@ -37,6 +38,7 @@ import org.chromium.net.UrlResponseInfo
object CronetEngine : HttpClientEngineBase("Cronet") {
override val config = HttpClientEngineConfig()
override val dispatcher = cronetDispatcher
@InternalAPI
override suspend fun execute(data: HttpRequestData): HttpResponseData {
@@ -11,7 +11,9 @@ import kotlinx.coroutines.suspendCancellableCoroutine
val pool = DirectByteBufferPool(32)
val cronetHttpClientExecutor = Dispatchers.IO.asExecutor()
// Limit thread to 1 since we are async & non-blocking
val cronetDispatcher = Dispatchers.IO.limitedParallelism(1)
val cronetHttpClientExecutor = cronetDispatcher.asExecutor()
@Suppress("NewApi")
suspend inline fun CronetRequest.awaitBodyFully(crossinline callback: (ByteBuffer) -> Unit) {
@@ -7,6 +7,7 @@ import android.net.http.UploadDataProvider
import android.net.http.UploadDataSink
import android.net.http.UrlRequest
import android.net.http.UrlResponseInfo
import com.hippo.ehviewer.cronet.cronetDispatcher
import com.hippo.ehviewer.cronet.cronetHttpClient
import com.hippo.ehviewer.cronet.cronetHttpClientExecutor
import com.hippo.ehviewer.cronet.pool
@@ -39,6 +40,7 @@ import kotlinx.coroutines.suspendCancellableCoroutine
object CronetEngine : HttpClientEngineBase("Cronet") {
override val config = HttpClientEngineConfig()
override val dispatcher = cronetDispatcher
@InternalAPI
override suspend fun execute(data: HttpRequestData): HttpResponseData {