Skip to content

Commit a522259

Browse files
committed
KTOR-8810 Make routing call coroutineContext delegate to engine call
1 parent 3f5797a commit a522259

File tree

5 files changed

+25
-3
lines changed

5 files changed

+25
-3
lines changed

ktor-server/ktor-server-core/api/ktor-server-core.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,6 +1785,7 @@ public final class io/ktor/server/routing/RoutingPathSegmentKind : java/lang/Enu
17851785
}
17861786

17871787
public final class io/ktor/server/routing/RoutingPipelineCall : io/ktor/server/application/PipelineCall, kotlinx/coroutines/CoroutineScope {
1788+
public fun <init> (Lio/ktor/server/application/PipelineCall;Lio/ktor/server/routing/RoutingNode;Lio/ktor/server/request/ApplicationReceivePipeline;Lio/ktor/server/response/ApplicationSendPipeline;Lio/ktor/http/Parameters;)V
17881789
public fun <init> (Lio/ktor/server/application/PipelineCall;Lio/ktor/server/routing/RoutingNode;Lkotlin/coroutines/CoroutineContext;Lio/ktor/server/request/ApplicationReceivePipeline;Lio/ktor/server/response/ApplicationSendPipeline;Lio/ktor/http/Parameters;)V
17891790
public fun getApplication ()Lio/ktor/server/application/Application;
17901791
public fun getAttributes ()Lio/ktor/util/Attributes;

ktor-server/ktor-server-core/api/ktor-server-core.klib.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,7 @@ final class io.ktor.server.routing/RoutingPathSegment { // io.ktor.server.routin
11061106
}
11071107

11081108
final class io.ktor.server.routing/RoutingPipelineCall : io.ktor.server.application/PipelineCall, kotlinx.coroutines/CoroutineScope { // io.ktor.server.routing/RoutingPipelineCall|null[0]
1109+
constructor <init>(io.ktor.server.application/PipelineCall, io.ktor.server.routing/RoutingNode, io.ktor.server.request/ApplicationReceivePipeline, io.ktor.server.response/ApplicationSendPipeline, io.ktor.http/Parameters) // io.ktor.server.routing/RoutingPipelineCall.<init>|<init>(io.ktor.server.application.PipelineCall;io.ktor.server.routing.RoutingNode;io.ktor.server.request.ApplicationReceivePipeline;io.ktor.server.response.ApplicationSendPipeline;io.ktor.http.Parameters){}[0]
11091110
constructor <init>(io.ktor.server.application/PipelineCall, io.ktor.server.routing/RoutingNode, kotlin.coroutines/CoroutineContext, io.ktor.server.request/ApplicationReceivePipeline, io.ktor.server.response/ApplicationSendPipeline, io.ktor.http/Parameters) // io.ktor.server.routing/RoutingPipelineCall.<init>|<init>(io.ktor.server.application.PipelineCall;io.ktor.server.routing.RoutingNode;kotlin.coroutines.CoroutineContext;io.ktor.server.request.ApplicationReceivePipeline;io.ktor.server.response.ApplicationSendPipeline;io.ktor.http.Parameters){}[0]
11101111

11111112
final val application // io.ktor.server.routing/RoutingPipelineCall.application|{}application[0]

ktor-server/ktor-server-core/common/src/io/ktor/server/routing/RoutingPipelineCall.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,29 @@ import kotlin.coroutines.*
2323
public class RoutingPipelineCall(
2424
public val engineCall: PipelineCall,
2525
public val route: RoutingNode,
26-
override val coroutineContext: CoroutineContext,
2726
receivePipeline: ApplicationReceivePipeline,
2827
responsePipeline: ApplicationSendPipeline,
2928
public val pathParameters: Parameters
3029
) : PipelineCall, CoroutineScope {
30+
@Deprecated(level = DeprecationLevel.WARNING, message = "CoroutineContext is delegated to engineCall now.")
31+
public constructor(
32+
engineCall: PipelineCall,
33+
route: RoutingNode,
34+
coroutineContext: CoroutineContext,
35+
receivePipeline: ApplicationReceivePipeline,
36+
responsePipeline: ApplicationSendPipeline,
37+
pathParameters: Parameters
38+
) : this(
39+
engineCall,
40+
route,
41+
receivePipeline,
42+
responsePipeline,
43+
pathParameters
44+
)
3145

3246
override val application: Application get() = engineCall.application
3347
override val attributes: Attributes get() = engineCall.attributes
48+
override val coroutineContext: CoroutineContext get() = engineCall.coroutineContext
3449

3550
override val request: RoutingPipelineRequest =
3651
RoutingPipelineRequest(this, receivePipeline, engineCall.request)

ktor-server/ktor-server-core/common/src/io/ktor/server/routing/RoutingRoot.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ public class RoutingRoot(
9494
val routingApplicationCall = RoutingPipelineCall(
9595
context.call,
9696
route,
97-
context.coroutineContext,
9897
receivePipeline,
9998
responsePipeline,
10099
parameters

ktor-server/ktor-server-netty/jvm/src/io/ktor/server/netty/http1/NettyHttp1Handler.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,13 @@ internal class NettyHttp1Handler(
4747
context.channel().read()
4848
context.pipeline().apply {
4949
addLast(RequestBodyHandler(context))
50-
addLast(callEventGroup, NettyApplicationCallHandler(userContext, enginePipeline))
50+
addLast(
51+
callEventGroup,
52+
NettyApplicationCallHandler(
53+
applicationProvider().coroutineContext + userContext,
54+
enginePipeline
55+
)
56+
)
5157
}
5258
context.fireChannelActive()
5359
}

0 commit comments

Comments
 (0)