1313//===----------------------------------------------------------------------===//
1414
1515import Foundation
16+ import Logging
1617import NIO
1718import NIOConcurrencyHelpers
1819import NIOFoundationCompat
@@ -533,17 +534,19 @@ extension HTTPClient {
533534 var connection : Connection ?
534535 var cancelled : Bool
535536 let lock : Lock
537+ let logger : Logger // We are okay to store the logger here because a Task is for only ond request.
536538
537- init ( eventLoop: EventLoop ) {
539+ init ( eventLoop: EventLoop , logger : Logger ) {
538540 self . eventLoop = eventLoop
539541 self . promise = eventLoop. makePromise ( )
540542 self . completion = self . promise. futureResult. map { _ in }
541543 self . cancelled = false
542544 self . lock = Lock ( )
545+ self . logger = logger
543546 }
544547
545- static func failedTask( eventLoop: EventLoop , error: Error ) -> Task < Response > {
546- let task = self . init ( eventLoop: eventLoop)
548+ static func failedTask( eventLoop: EventLoop , error: Error , logger : Logger ) -> Task < Response > {
549+ let task = self . init ( eventLoop: eventLoop, logger : logger )
547550 task. promise. fail ( error)
548551 return task
549552 }
@@ -585,13 +588,18 @@ extension HTTPClient {
585588 }
586589 }
587590
588- func succeed< Delegate: HTTPClientResponseDelegate > ( promise: EventLoopPromise < Response > ? , with value: Response , delegateType: Delegate . Type , closing: Bool ) {
589- self . releaseAssociatedConnection ( delegateType: delegateType, closing: closing) . whenSuccess {
591+ func succeed< Delegate: HTTPClientResponseDelegate > ( promise: EventLoopPromise < Response > ? ,
592+ with value: Response ,
593+ delegateType: Delegate . Type ,
594+ closing: Bool ) {
595+ self . releaseAssociatedConnection ( delegateType: delegateType,
596+ closing: closing) . whenSuccess {
590597 promise? . succeed ( value)
591598 }
592599 }
593600
594- func fail< Delegate: HTTPClientResponseDelegate > ( with error: Error , delegateType: Delegate . Type ) {
601+ func fail< Delegate: HTTPClientResponseDelegate > ( with error: Error ,
602+ delegateType: Delegate . Type ) {
595603 if let connection = self . connection {
596604 self . releaseAssociatedConnection ( delegateType: delegateType, closing: true )
597605 . whenSuccess {
@@ -601,13 +609,14 @@ extension HTTPClient {
601609 }
602610 }
603611
604- func releaseAssociatedConnection< Delegate: HTTPClientResponseDelegate > ( delegateType: Delegate . Type , closing: Bool ) -> EventLoopFuture < Void > {
612+ func releaseAssociatedConnection< Delegate: HTTPClientResponseDelegate > ( delegateType: Delegate . Type ,
613+ closing: Bool ) -> EventLoopFuture < Void > {
605614 if let connection = self . connection {
606615 // remove read timeout handler
607616 return connection. removeHandler ( IdleStateHandler . self) . flatMap {
608617 connection. removeHandler ( TaskHandler< Delegate> . self )
609618 } . map {
610- connection. release ( closing: closing)
619+ connection. release ( closing: closing, logger : self . logger )
611620 } . flatMapError { error in
612621 fatalError ( " Couldn't remove taskHandler: \( error) " )
613622 }
@@ -639,6 +648,7 @@ internal class TaskHandler<Delegate: HTTPClientResponseDelegate>: RemovableChann
639648 let delegate : Delegate
640649 let redirectHandler : RedirectHandler < Delegate . Response > ?
641650 let ignoreUncleanSSLShutdown : Bool
651+ let logger : Logger // We are okay to store the logger here because a TaskHandler is just for one request.
642652
643653 var state : State = . idle
644654 var pendingRead = false
@@ -656,12 +666,14 @@ internal class TaskHandler<Delegate: HTTPClientResponseDelegate>: RemovableChann
656666 kind: HTTPClient . Request . Kind ,
657667 delegate: Delegate ,
658668 redirectHandler: RedirectHandler < Delegate . Response > ? ,
659- ignoreUncleanSSLShutdown: Bool ) {
669+ ignoreUncleanSSLShutdown: Bool ,
670+ logger: Logger ) {
660671 self . task = task
661672 self . delegate = delegate
662673 self . redirectHandler = redirectHandler
663674 self . ignoreUncleanSSLShutdown = ignoreUncleanSSLShutdown
664675 self . kind = kind
676+ self . logger = logger
665677 }
666678}
667679
@@ -717,7 +729,10 @@ extension TaskHandler {
717729 do {
718730 let result = try body ( self . task)
719731
720- self . task. succeed ( promise: promise, with: result, delegateType: Delegate . self, closing: self . closing)
732+ self . task. succeed ( promise: promise,
733+ with: result,
734+ delegateType: Delegate . self,
735+ closing: self . closing)
721736 } catch {
722737 self . task. fail ( with: error, delegateType: Delegate . self)
723738 }
0 commit comments