@@ -641,8 +641,8 @@ public class HTTPClient {
641641 public var redirectConfiguration : RedirectConfiguration
642642 /// Default client timeout, defaults to no timeouts.
643643 public var timeout : Timeout
644- /// Timeout of pooled connections
645- public var maximumAllowedIdleTimeInConnectionPool : Optional < TimeAmount >
644+ /// Connection pool configuration.
645+ public var poolConfiguration : PoolConfiguration
646646 /// Upstream proxy, defaults to no proxy.
647647 public var proxy : Proxy ?
648648 /// Enables automatic body decompression. Supported algorithms are gzip and deflate.
@@ -653,14 +653,14 @@ public class HTTPClient {
653653 public init ( tlsConfiguration: TLSConfiguration ? = nil ,
654654 redirectConfiguration: RedirectConfiguration ? = nil ,
655655 timeout: Timeout = Timeout ( ) ,
656- maximumAllowedIdleTimeInConnectionPool : TimeAmount ,
656+ poolConfiguration : PoolConfiguration = PoolConfiguration ( ) ,
657657 proxy: Proxy ? = nil ,
658658 ignoreUncleanSSLShutdown: Bool = false ,
659659 decompression: Decompression = . disabled) {
660660 self . tlsConfiguration = tlsConfiguration
661661 self . redirectConfiguration = redirectConfiguration ?? RedirectConfiguration ( )
662662 self . timeout = timeout
663- self . maximumAllowedIdleTimeInConnectionPool = maximumAllowedIdleTimeInConnectionPool
663+ self . poolConfiguration = poolConfiguration
664664 self . proxy = proxy
665665 self . ignoreUncleanSSLShutdown = ignoreUncleanSSLShutdown
666666 self . decompression = decompression
@@ -676,7 +676,7 @@ public class HTTPClient {
676676 tlsConfiguration: tlsConfiguration,
677677 redirectConfiguration: redirectConfiguration,
678678 timeout: timeout,
679- maximumAllowedIdleTimeInConnectionPool : . seconds ( 60 ) ,
679+ poolConfiguration : PoolConfiguration ( ) ,
680680 proxy: proxy,
681681 ignoreUncleanSSLShutdown: ignoreUncleanSSLShutdown,
682682 decompression: decompression
@@ -693,7 +693,7 @@ public class HTTPClient {
693693 self . init ( tlsConfiguration: TLSConfiguration . forClient ( certificateVerification: certificateVerification) ,
694694 redirectConfiguration: redirectConfiguration,
695695 timeout: timeout,
696- maximumAllowedIdleTimeInConnectionPool : maximumAllowedIdleTimeInConnectionPool ,
696+ poolConfiguration : PoolConfiguration ( ) ,
697697 proxy: proxy,
698698 ignoreUncleanSSLShutdown: ignoreUncleanSSLShutdown,
699699 decompression: decompression)
@@ -702,15 +702,15 @@ public class HTTPClient {
702702 public init ( certificateVerification: CertificateVerification ,
703703 redirectConfiguration: RedirectConfiguration ? = nil ,
704704 timeout: Timeout = Timeout ( ) ,
705- maximumAllowedIdleTimeInConnectionPool : TimeAmount = . seconds( 60 ) ,
705+ poolConfiguration : TimeAmount = . seconds( 60 ) ,
706706 proxy: Proxy ? = nil ,
707707 ignoreUncleanSSLShutdown: Bool = false ,
708708 decompression: Decompression = . disabled,
709709 backgroundActivityLogger: Logger ? ) {
710710 self . init ( tlsConfiguration: TLSConfiguration . forClient ( certificateVerification: certificateVerification) ,
711711 redirectConfiguration: redirectConfiguration,
712712 timeout: timeout,
713- maximumAllowedIdleTimeInConnectionPool : maximumAllowedIdleTimeInConnectionPool ,
713+ poolConfiguration : PoolConfiguration ( ) ,
714714 proxy: proxy,
715715 ignoreUncleanSSLShutdown: ignoreUncleanSSLShutdown,
716716 decompression: decompression)
@@ -811,7 +811,7 @@ public class HTTPClient {
811811}
812812
813813extension HTTPClient . Configuration {
814- /// Timeout configuration
814+ /// Timeout configuration.
815815 public struct Timeout {
816816 /// Specifies connect timeout.
817817 public var connect : TimeAmount ?
@@ -860,6 +860,16 @@ extension HTTPClient.Configuration {
860860 /// - warning: Cycle detection will keep all visited URLs in memory which means a malicious server could use this as a denial-of-service vector.
861861 public static func follow( max: Int , allowCycles: Bool ) -> RedirectConfiguration { return . init( configuration: . follow( max: max, allowCycles: allowCycles) ) }
862862 }
863+
864+ /// Connection pool configuration.
865+ public struct PoolConfiguration : Hashable {
866+ // Specifies amount of time connections are kept idle in the pool.
867+ public var idleTimeout : TimeAmount
868+
869+ public init ( idleTimeout: TimeAmount = . seconds( 60 ) ) {
870+ self . idleTimeout = idleTimeout
871+ }
872+ }
863873}
864874
865875extension ChannelPipeline {
0 commit comments