Skip to content

Commit 388b8dc

Browse files
fabianfettglbrntt
andauthored
Add HTTP2Connection (#401)
Co-authored-by: George Barnett <[email protected]>
1 parent e967f9a commit 388b8dc

19 files changed

+2160
-69
lines changed

Diff for: Package.swift

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ let package = Package(
3434
dependencies: [
3535
.product(name: "NIO", package: "swift-nio"),
3636
.product(name: "NIOHTTP1", package: "swift-nio"),
37+
.product(name: "NIOHTTP2", package: "swift-nio-http2"),
3738
.product(name: "NIOSSL", package: "swift-nio-ssl"),
3839
.product(name: "NIOConcurrencyHelpers", package: "swift-nio"),
3940
.product(name: "NIOHTTPCompression", package: "swift-nio-extras"),

Diff for: Sources/AsyncHTTPClient/ConnectionPool/HTTP1.1/HTTP1ClientChannelHandler.swift

+19-14
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,17 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
3333
/// the currently executing request
3434
private var request: HTTPExecutableRequest? {
3535
didSet {
36-
if let request = request {
37-
var requestLogger = request.logger
36+
if let newRequest = self.request {
37+
var requestLogger = newRequest.logger
3838
requestLogger[metadataKey: "ahc-connection-id"] = "\(self.connection.id)"
3939
self.logger = requestLogger
40+
41+
if let idleReadTimeout = newRequest.idleReadTimeout {
42+
self.idleReadTimeoutStateMachine = .init(timeAmount: idleReadTimeout)
43+
}
4044
} else {
4145
self.logger = self.backgroundLogger
46+
self.idleReadTimeoutStateMachine = nil
4247
}
4348
}
4449
}
@@ -100,7 +105,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
100105
}
101106

102107
func channelRead(context: ChannelHandlerContext, data: NIOAny) {
103-
let httpPart = unwrapInboundIn(data)
108+
let httpPart = self.unwrapInboundIn(data)
104109

105110
self.logger.trace("HTTP response part received", metadata: [
106111
"ahc-http-part": "\(httpPart)",
@@ -121,6 +126,17 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
121126
self.run(action, context: context)
122127
}
123128

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+
124140
func write(context: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise<Void>?) {
125141
assert(self.request == nil, "Only write to the ChannelHandler if you are sure, it is idle!")
126142
let req = self.unwrapOutboundIn(data)
@@ -145,15 +161,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
145161
self.run(action, context: context)
146162
}
147163

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-
157164
func triggerUserOutboundEvent(context: ChannelHandlerContext, event: Any, promise: EventLoopPromise<Void>?) {
158165
switch event {
159166
case HTTPConnectionEvent.cancelRequest:
@@ -246,7 +253,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
246253

247254
let oldRequest = self.request!
248255
self.request = nil
249-
self.idleReadTimeoutStateMachine = nil
250256

251257
switch finalAction {
252258
case .close:
@@ -265,7 +271,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
265271
// see comment in the `succeedRequest` case.
266272
let oldRequest = self.request!
267273
self.request = nil
268-
self.idleReadTimeoutStateMachine = nil
269274

270275
switch finalAction {
271276
case .close:

0 commit comments

Comments
 (0)