Skip to content

Commit bcbe385

Browse files
committed
Code review
1 parent c7ccffc commit bcbe385

File tree

1 file changed

+8
-22
lines changed

1 file changed

+8
-22
lines changed

Sources/NIOHTTP2/HTTP2ToHTTP1Codec.swift

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -149,20 +149,22 @@ private struct BaseClientCodec {
149149

150150
case (.data(var data), .none):
151151
data.endStream = true
152-
let flushPromise = self.mergeEndPromiseAndPendingPromise(promise)
153-
return (.init(.data(data), flushPromise), nil)
152+
var pendingPromise = self.pendingFrameWrite!.promise
153+
pendingPromise.setOrCascade(to: promise)
154+
return (.init(.data(data), pendingPromise), nil)
154155

155156
case (.data(let data), .some(let trailers)):
156-
let trailers = self.makeH2TrailerFramePayload(trailers)
157+
let trailerFrame = self.makeH2TrailerFramePayload(trailers)
157158
return (
158159
.init(.data(data), self.pendingFrameWrite!.promise),
159-
.init(trailers, promise)
160+
.init(trailerFrame, promise)
160161
)
161162

162163
case (.headers(var headers), .none):
163164
headers.endStream = true
164-
let flushPromise = self.mergeEndPromiseAndPendingPromise(promise)
165-
return (.init(.headers(headers), flushPromise), nil)
165+
var pendingPromise = self.pendingFrameWrite!.promise
166+
pendingPromise.setOrCascade(to: promise)
167+
return (.init(.headers(headers), pendingPromise), nil)
166168

167169
case (.headers(let headers), .some(let trailers)):
168170
let trailers = self.makeH2TrailerFramePayload(trailers)
@@ -194,22 +196,6 @@ private struct BaseClientCodec {
194196
)
195197
)
196198
}
197-
198-
private func mergeEndPromiseAndPendingPromise(_ endPromise: EventLoopPromise<Void>?) -> EventLoopPromise<Void>? {
199-
// We only need to merge, if there is an outstanding frame write. Therefore we can bang
200-
// the frame write here.
201-
switch (self.pendingFrameWrite!.promise, endPromise) {
202-
case (.none, .none):
203-
return nil
204-
case (.some(let pending), .none):
205-
return pending
206-
case (.none, .some(let end)):
207-
return end
208-
case (.some(let pending), .some(let end)):
209-
pending.futureResult.cascade(to: end)
210-
return pending
211-
}
212-
}
213199
}
214200

215201
/// A simple channel handler that translates HTTP/2 concepts into HTTP/1 data types,

0 commit comments

Comments
 (0)