@@ -31,18 +31,31 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
31
31
private var channelContext : ChannelHandlerContext ?
32
32
33
33
/// the currently executing request
34
- private var request : HTTPExecutableRequest ?
34
+ private var request : HTTPExecutableRequest ? {
35
+ didSet {
36
+ if let request = request {
37
+ var requestLogger = request. logger
38
+ requestLogger [ metadataKey: " ahc-connection-id " ] = " \( self . connection. id) "
39
+ self . logger = requestLogger
40
+ } else {
41
+ self . logger = self . backgroundLogger
42
+ }
43
+ }
44
+ }
35
45
private var idleReadTimeoutStateMachine : IdleReadStateMachine ?
36
46
private var idleReadTimeoutTimer : Scheduled < Void > ?
37
-
47
+
48
+ private let backgroundLogger : Logger
49
+ private var logger : Logger
50
+
38
51
let connection : HTTP1Connection
39
- let logger : Logger
40
52
let eventLoop : EventLoop
41
53
42
54
init ( connection: HTTP1Connection , eventLoop: EventLoop , logger: Logger ) {
43
55
self . connection = connection
44
56
self . eventLoop = eventLoop
45
- self . logger = logger
57
+ self . backgroundLogger = logger
58
+ self . logger = self . backgroundLogger
46
59
}
47
60
48
61
func handlerAdded( context: ChannelHandlerContext ) {
@@ -72,7 +85,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
72
85
73
86
func channelWritabilityChanged( context: ChannelHandlerContext ) {
74
87
self . logger. trace ( " Channel writability changed " , metadata: [
75
- " writable " : " \( context. channel. isWritable) " ,
88
+ " ahc-channel- writable" : " \( context. channel. isWritable) " ,
76
89
] )
77
90
78
91
let action = self . state. writabilityChanged ( writable: context. channel. isWritable)
@@ -82,8 +95,8 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
82
95
func channelRead( context: ChannelHandlerContext , data: NIOAny ) {
83
96
let httpPart = unwrapInboundIn ( data)
84
97
85
- self . logger. trace ( " Message received" , metadata: [
86
- " message " : " \( httpPart) " ,
98
+ self . logger. trace ( " HTTP response part received" , metadata: [
99
+ " ahc-http-part " : " \( httpPart) " ,
87
100
] )
88
101
89
102
if let timeoutAction = self . idleReadTimeoutStateMachine? . channelRead ( httpPart) {
@@ -95,16 +108,18 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
95
108
}
96
109
97
110
func channelReadComplete( context: ChannelHandlerContext ) {
111
+ self . logger. trace ( " Read complete caught " )
112
+
98
113
let action = self . state. channelReadComplete ( )
99
114
self . run ( action, context: context)
100
115
}
101
116
102
117
func write( context: ChannelHandlerContext , data: NIOAny , promise: EventLoopPromise < Void > ? ) {
103
- self . logger. trace ( " New request to execute " )
104
-
105
118
assert ( self . request == nil , " Only write to the ChannelHandler if you are sure, it is idle! " )
106
119
let req = self . unwrapOutboundIn ( data)
107
120
self . request = req
121
+
122
+ self . logger. trace ( " New request to execute " )
108
123
109
124
if let idleReadTimeout = self . request? . idleReadTimeout {
110
125
self . idleReadTimeoutStateMachine = . init( timeAmount: idleReadTimeout)
@@ -117,7 +132,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
117
132
}
118
133
119
134
func read( context: ChannelHandlerContext ) {
120
- self . logger. trace ( " Read " )
135
+ self . logger. trace ( " Read event caught " )
121
136
122
137
let action = self . state. read ( )
123
138
self . run ( action, context: context)
@@ -135,6 +150,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
135
150
func triggerUserOutboundEvent( context: ChannelHandlerContext , event: Any , promise: EventLoopPromise < Void > ? ) {
136
151
switch event {
137
152
case HTTPConnectionEvent . cancelRequest:
153
+ self . logger. trace ( " User outbound event triggered: Cancel request for connection close " )
138
154
let action = self . state. requestCancelled ( closeConnection: true )
139
155
self . run ( action, context: context)
140
156
default :
@@ -333,6 +349,8 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
333
349
// See code comment in `writeRequestBodyPart0`
334
350
return
335
351
}
352
+
353
+ self . logger. trace ( " Request was cancelled " )
336
354
337
355
let action = self . state. requestCancelled ( closeConnection: true )
338
356
self . run ( action, context: context)
0 commit comments