@@ -33,12 +33,17 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
33
33
/// the currently executing request
34
34
private var request : HTTPExecutableRequest ? {
35
35
didSet {
36
- if let request = request {
37
- var requestLogger = request . logger
36
+ if let newRequest = self . request {
37
+ var requestLogger = newRequest . logger
38
38
requestLogger [ metadataKey: " ahc-connection-id " ] = " \( self . connection. id) "
39
39
self . logger = requestLogger
40
+
41
+ if let idleReadTimeout = newRequest. idleReadTimeout {
42
+ self . idleReadTimeoutStateMachine = . init( timeAmount: idleReadTimeout)
43
+ }
40
44
} else {
41
45
self . logger = self . backgroundLogger
46
+ self . idleReadTimeoutStateMachine = nil
42
47
}
43
48
}
44
49
}
@@ -100,7 +105,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
100
105
}
101
106
102
107
func channelRead( context: ChannelHandlerContext , data: NIOAny ) {
103
- let httpPart = unwrapInboundIn ( data)
108
+ let httpPart = self . unwrapInboundIn ( data)
104
109
105
110
self . logger. trace ( " HTTP response part received " , metadata: [
106
111
" ahc-http-part " : " \( httpPart) " ,
@@ -121,6 +126,17 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
121
126
self . run ( action, context: context)
122
127
}
123
128
129
+ func errorCaught( context: ChannelHandlerContext , error: Error ) {
130
+ self . logger. trace ( " Error caught " , metadata: [
131
+ " error " : " \( error) " ,
132
+ ] )
133
+
134
+ let action = self . state. errorHappened ( error)
135
+ self . run ( action, context: context)
136
+ }
137
+
138
+ // MARK: Channel Outbound Handler
139
+
124
140
func write( context: ChannelHandlerContext , data: NIOAny , promise: EventLoopPromise < Void > ? ) {
125
141
assert ( self . request == nil , " Only write to the ChannelHandler if you are sure, it is idle! " )
126
142
let req = self . unwrapOutboundIn ( data)
@@ -145,15 +161,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
145
161
self . run ( action, context: context)
146
162
}
147
163
148
- func errorCaught( context: ChannelHandlerContext , error: Error ) {
149
- self . logger. trace ( " Error caught " , metadata: [
150
- " error " : " \( error) " ,
151
- ] )
152
-
153
- let action = self . state. errorHappened ( error)
154
- self . run ( action, context: context)
155
- }
156
-
157
164
func triggerUserOutboundEvent( context: ChannelHandlerContext , event: Any , promise: EventLoopPromise < Void > ? ) {
158
165
switch event {
159
166
case HTTPConnectionEvent . cancelRequest:
@@ -246,7 +253,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
246
253
247
254
let oldRequest = self . request!
248
255
self . request = nil
249
- self . idleReadTimeoutStateMachine = nil
250
256
251
257
switch finalAction {
252
258
case . close:
@@ -265,7 +271,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
265
271
// see comment in the `succeedRequest` case.
266
272
let oldRequest = self . request!
267
273
self . request = nil
268
- self . idleReadTimeoutStateMachine = nil
269
274
270
275
switch finalAction {
271
276
case . close:
0 commit comments