Skip to content

Commit 6e6cfb2

Browse files
whyolegosipxd
authored andcommitted
KTOR-7675 Support CIO client for wasm-js and js (#4441)
* Support multiple client engines for JS/WasmJs * CIO client Js/WasmJs support * Enable CIO tests in client tests * Make client engines `data object` to have `toString` * Make ClientLoader work with multiple engines on js/wasmJs and so test CIO engine on nodejs(js+wasmJs)
1 parent da4320f commit 6e6cfb2

File tree

68 files changed

+397
-404
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+397
-404
lines changed

ktor-client/ktor-client-android/api/ktor-client-android.api

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
public final class io/ktor/client/engine/android/Android : io/ktor/client/engine/HttpClientEngineFactory {
22
public static final field INSTANCE Lio/ktor/client/engine/android/Android;
33
public fun create (Lkotlin/jvm/functions/Function1;)Lio/ktor/client/engine/HttpClientEngine;
4+
public fun equals (Ljava/lang/Object;)Z
5+
public fun hashCode ()I
6+
public fun toString ()Ljava/lang/String;
47
}
58

69
public final class io/ktor/client/engine/android/AndroidClientEngine : io/ktor/client/engine/HttpClientEngineBase {

ktor-client/ktor-client-android/jvm/src/io/ktor/client/engine/android/Android.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import io.ktor.client.engine.*
2626
*
2727
* You can learn more about client engines from [Engines](https://ktor.io/docs/http-client-engines.html).
2828
*/
29-
public object Android : HttpClientEngineFactory<AndroidEngineConfig> {
29+
public data object Android : HttpClientEngineFactory<AndroidEngineConfig> {
3030
override fun create(block: AndroidEngineConfig.() -> Unit): HttpClientEngine =
3131
AndroidClientEngine(AndroidEngineConfig().apply(block))
3232
}

ktor-client/ktor-client-apache/api/ktor-client-apache.api

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
public final class io/ktor/client/engine/apache/Apache : io/ktor/client/engine/HttpClientEngineFactory {
22
public static final field INSTANCE Lio/ktor/client/engine/apache/Apache;
33
public fun create (Lkotlin/jvm/functions/Function1;)Lio/ktor/client/engine/HttpClientEngine;
4+
public fun equals (Ljava/lang/Object;)Z
5+
public fun hashCode ()I
6+
public fun toString ()Ljava/lang/String;
47
}
58

69
public final class io/ktor/client/engine/apache/ApacheEngineConfig : io/ktor/client/engine/HttpClientEngineConfig {

ktor-client/ktor-client-apache/jvm/src/io/ktor/client/engine/apache/Apache.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import io.ktor.client.engine.*
2525
*
2626
* You can learn more about client engines from [Engines](https://ktor.io/docs/http-client-engines.html).
2727
*/
28-
public object Apache : HttpClientEngineFactory<ApacheEngineConfig> {
28+
public data object Apache : HttpClientEngineFactory<ApacheEngineConfig> {
2929
override fun create(block: ApacheEngineConfig.() -> Unit): HttpClientEngine {
3030
val config = ApacheEngineConfig().apply(block)
3131
return ApacheEngine(config)

ktor-client/ktor-client-apache5/api/ktor-client-apache5.api

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
public final class io/ktor/client/engine/apache5/Apache5 : io/ktor/client/engine/HttpClientEngineFactory {
22
public static final field INSTANCE Lio/ktor/client/engine/apache5/Apache5;
33
public fun create (Lkotlin/jvm/functions/Function1;)Lio/ktor/client/engine/HttpClientEngine;
4+
public fun equals (Ljava/lang/Object;)Z
5+
public fun hashCode ()I
6+
public fun toString ()Ljava/lang/String;
47
}
58

69
public final class io/ktor/client/engine/apache5/Apache5EngineConfig : io/ktor/client/engine/HttpClientEngineConfig {

ktor-client/ktor-client-apache5/jvm/src/io/ktor/client/engine/apache5/Apache5.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import io.ktor.client.engine.*
2525
*
2626
* You can learn more about client engines from [Engines](https://ktor.io/docs/http-client-engines.html).
2727
*/
28-
public object Apache5 : HttpClientEngineFactory<Apache5EngineConfig> {
28+
public data object Apache5 : HttpClientEngineFactory<Apache5EngineConfig> {
2929
override fun create(block: Apache5EngineConfig.() -> Unit): HttpClientEngine {
3030
val config = Apache5EngineConfig().apply(block)
3131
return Apache5Engine(config)

ktor-client/ktor-client-cio/api/ktor-client-cio.klib.api

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Klib ABI Dump
2-
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
2+
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
33
// Rendering settings:
44
// - Signature version: 2
55
// - Show manifest properties: true
@@ -62,3 +62,7 @@ final object io.ktor.client.engine.cio/CIO : io.ktor.client.engine/HttpClientEng
6262
}
6363

6464
final fun (io.ktor.client.engine.cio/CIOEngineConfig).io.ktor.client.engine.cio/endpoint(kotlin/Function1<io.ktor.client.engine.cio/EndpointConfig, kotlin/Unit>): io.ktor.client.engine.cio/EndpointConfig // io.ktor.client.engine.cio/endpoint|[email protected](kotlin.Function1<io.ktor.client.engine.cio.EndpointConfig,kotlin.Unit>){}[0]
65+
66+
// Targets: [js]
67+
final val io.ktor.client.engine.cio/initHook // io.ktor.client.engine.cio/initHook|{}initHook[0]
68+
final fun <get-initHook>(): dynamic // io.ktor.client.engine.cio/initHook.<get-initHook>|<get-initHook>(){}[0]

ktor-client/ktor-client-cio/jvmAndPosix/src/io/ktor/client/engine/cio/CIOCommon.kt renamed to ktor-client/ktor-client-cio/common/src/io/ktor/client/engine/cio/CIOCommon.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ import io.ktor.client.engine.*
2626
* You can learn more about client engines from [Engines](https://ktor.io/docs/http-client-engines.html).
2727
*/
2828
public data object CIO : HttpClientEngineFactory<CIOEngineConfig> {
29-
init {
30-
addToLoader()
31-
}
32-
3329
override fun create(block: CIOEngineConfig.() -> Unit): HttpClientEngine =
3430
CIOEngine(CIOEngineConfig().apply(block))
3531
}

ktor-client/ktor-client-cio/jvmAndPosix/src/io/ktor/client/engine/cio/CIOEngine.kt renamed to ktor-client/ktor-client-cio/common/src/io/ktor/client/engine/cio/CIOEngine.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ internal class CIOEngine(
6161
val requestJob = requestField[Job]!!
6262
val selector = selectorManager
6363

64-
@OptIn(ExperimentalCoroutinesApi::class)
6564
GlobalScope.launch(parentContext, start = CoroutineStart.ATOMIC) {
6665
try {
6766
requestJob.join()

0 commit comments

Comments
 (0)