@@ -122,25 +122,25 @@ public struct HTTPResponse: Equatable {
122
122
public protocol HTTPResponseDelegate : class {
123
123
associatedtype Response
124
124
125
- func didTransmitRequestBody( )
125
+ func didTransmitRequestBody( task : HTTPTask < Response > )
126
126
127
- func didReceiveHead( _ head: HTTPResponseHead )
127
+ func didReceiveHead( task : HTTPTask < Response > , _ head: HTTPResponseHead )
128
128
129
- func didReceivePart( _ buffer: ByteBuffer )
129
+ func didReceivePart( task : HTTPTask < Response > , _ buffer: ByteBuffer )
130
130
131
- func didReceiveError( _ error: Error )
131
+ func didReceiveError( task : HTTPTask < Response > , _ error: Error )
132
132
133
- func didFinishRequest( ) throws -> Response
133
+ func didFinishRequest( task : HTTPTask < Response > ) throws -> Response
134
134
}
135
135
136
136
extension HTTPResponseDelegate {
137
- func didTransmitRequestBody( ) { }
137
+ func didTransmitRequestBody( task : HTTPTask < Response > ) { }
138
138
139
- func didReceiveHead( _: HTTPResponseHead ) { }
139
+ func didReceiveHead( task : HTTPTask < Response > , _: HTTPResponseHead ) { }
140
140
141
- func didReceivePart( _: ByteBuffer ) { }
141
+ func didReceivePart( task : HTTPTask < Response > , _: ByteBuffer ) { }
142
142
143
- func didReceiveError( _: Error ) { }
143
+ func didReceiveError( task : HTTPTask < Response > , _: Error ) { }
144
144
}
145
145
146
146
class HTTPResponseAccumulator : HTTPResponseDelegate {
@@ -161,9 +161,9 @@ class HTTPResponseAccumulator: HTTPResponseDelegate {
161
161
self . request = request
162
162
}
163
163
164
- func didTransmitRequestBody( ) { }
164
+ func didTransmitRequestBody( task : HTTPTask < Response > ) { }
165
165
166
- func didReceiveHead( _ head: HTTPResponseHead ) {
166
+ func didReceiveHead( task : HTTPTask < Response > , _ head: HTTPResponseHead ) {
167
167
switch self . state {
168
168
case . idle:
169
169
self . state = . head( head)
@@ -178,7 +178,7 @@ class HTTPResponseAccumulator: HTTPResponseDelegate {
178
178
}
179
179
}
180
180
181
- func didReceivePart( _ part: ByteBuffer ) {
181
+ func didReceivePart( task : HTTPTask < Response > , _ part: ByteBuffer ) {
182
182
switch self . state {
183
183
case . idle:
184
184
preconditionFailure ( " no head received before body " )
@@ -195,11 +195,11 @@ class HTTPResponseAccumulator: HTTPResponseDelegate {
195
195
}
196
196
}
197
197
198
- func didReceiveError( _ error: Error ) {
198
+ func didReceiveError( task : HTTPTask < Response > , _ error: Error ) {
199
199
self . state = . error( error)
200
200
}
201
201
202
- func didFinishRequest( ) throws -> HTTPResponse {
202
+ func didFinishRequest( task : HTTPTask < Response > ) throws -> HTTPResponse {
203
203
switch self . state {
204
204
case . idle:
205
205
preconditionFailure ( " no head received before end " )
@@ -279,13 +279,15 @@ class HTTPTaskHandler<T: HTTPResponseDelegate>: ChannelInboundHandler, ChannelOu
279
279
case end
280
280
}
281
281
282
+ let task : HTTPTask < T . Response >
282
283
let delegate : T
283
284
let promise : EventLoopPromise < T . Response >
284
285
let redirectHandler : RedirectHandler < T . Response > ?
285
286
286
287
var state : State = . idle
287
288
288
- init ( delegate: T , promise: EventLoopPromise < T . Response > , redirectHandler: RedirectHandler < T . Response > ? ) {
289
+ init ( task: HTTPTask < T . Response > , delegate: T , promise: EventLoopPromise < T . Response > , redirectHandler: RedirectHandler < T . Response > ? ) {
290
+ self . task = task
289
291
self . delegate = delegate
290
292
self . promise = promise
291
293
self . redirectHandler = redirectHandler
@@ -336,7 +338,7 @@ class HTTPTaskHandler<T: HTTPResponseDelegate>: ChannelInboundHandler, ChannelOu
336
338
context. flush ( )
337
339
338
340
self . state = . sent
339
- self . delegate. didTransmitRequestBody ( )
341
+ self . delegate. didTransmitRequestBody ( task : self . task )
340
342
}
341
343
342
344
func channelRead( context: ChannelHandlerContext , data: NIOAny ) {
@@ -347,15 +349,15 @@ class HTTPTaskHandler<T: HTTPResponseDelegate>: ChannelInboundHandler, ChannelOu
347
349
self . state = . redirected( head, redirectURL)
348
350
} else {
349
351
self . state = . head
350
- self . delegate. didReceiveHead ( head)
352
+ self . delegate. didReceiveHead ( task : self . task , head)
351
353
}
352
354
case . body( let body) :
353
355
switch self . state {
354
356
case . redirected:
355
357
break
356
358
default :
357
359
self . state = . body
358
- self . delegate. didReceivePart ( body)
360
+ self . delegate. didReceivePart ( task : self . task , body)
359
361
}
360
362
case . end:
361
363
switch self . state {
@@ -365,7 +367,7 @@ class HTTPTaskHandler<T: HTTPResponseDelegate>: ChannelInboundHandler, ChannelOu
365
367
default :
366
368
self . state = . end
367
369
do {
368
- self . promise. succeed ( try self . delegate. didFinishRequest ( ) )
370
+ self . promise. succeed ( try self . delegate. didFinishRequest ( task : self . task ) )
369
371
} catch {
370
372
self . promise. fail ( error)
371
373
}
@@ -377,12 +379,12 @@ class HTTPTaskHandler<T: HTTPResponseDelegate>: ChannelInboundHandler, ChannelOu
377
379
if ( event as? IdleStateHandler . IdleStateEvent) == . read {
378
380
self . state = . end
379
381
let error = HTTPClientErrors . ReadTimeoutError ( )
380
- delegate. didReceiveError ( error)
382
+ delegate. didReceiveError ( task : self . task , error)
381
383
promise. fail ( error)
382
384
} else if ( event as? CancelEvent ) != nil {
383
385
self . state = . end
384
386
let error = HTTPClientErrors . CancelledError ( )
385
- delegate. didReceiveError ( error)
387
+ delegate. didReceiveError ( task : self . task , error)
386
388
promise. fail ( error)
387
389
} else {
388
390
context. fireUserInboundEventTriggered ( event)
@@ -396,7 +398,7 @@ class HTTPTaskHandler<T: HTTPResponseDelegate>: ChannelInboundHandler, ChannelOu
396
398
default :
397
399
self . state = . end
398
400
let error = HTTPClientErrors . RemoteConnectionClosedError ( )
399
- delegate. didReceiveError ( error)
401
+ delegate. didReceiveError ( task : self . task , error)
400
402
promise. fail ( error)
401
403
}
402
404
}
@@ -411,12 +413,12 @@ class HTTPTaskHandler<T: HTTPResponseDelegate>: ChannelInboundHandler, ChannelOu
411
413
break
412
414
default :
413
415
self . state = . end
414
- self . delegate. didReceiveError ( error)
416
+ self . delegate. didReceiveError ( task : self . task , error)
415
417
self . promise. fail ( error)
416
418
}
417
419
default :
418
420
self . state = . end
419
- self . delegate. didReceiveError ( error)
421
+ self . delegate. didReceiveError ( task : self . task , error)
420
422
self . promise. fail ( error)
421
423
}
422
424
}
0 commit comments