Skip to content

Commit

Permalink
give generic parameters nice names (#99)
Browse files Browse the repository at this point in the history
  • Loading branch information
weissi authored Sep 9, 2019
1 parent 47de4bb commit 1b31c5a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 deletions.
20 changes: 14 additions & 6 deletions Sources/AsyncHTTPClient/HTTPClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,9 @@ public class HTTPClient {
/// - request: HTTP request to execute.
/// - delegate: Delegate to process response parts.
/// - deadline: Point in time by which the request must complete.
public func execute<T: HTTPClientResponseDelegate>(request: Request, delegate: T, deadline: NIODeadline? = nil) -> Task<T.Response> {
public func execute<Delegate: HTTPClientResponseDelegate>(request: Request,
delegate: Delegate,
deadline: NIODeadline? = nil) -> Task<Delegate.Response> {
let eventLoop = self.eventLoopGroup.next()
return self.execute(request: request, delegate: delegate, eventLoop: eventLoop, deadline: deadline)
}
Expand All @@ -196,7 +198,10 @@ public class HTTPClient {
/// - delegate: Delegate to process response parts.
/// - eventLoop: NIO Event Loop preference.
/// - deadline: Point in time by which the request must complete.
public func execute<T: HTTPClientResponseDelegate>(request: Request, delegate: T, eventLoop: EventLoopPreference, deadline: NIODeadline? = nil) -> Task<T.Response> {
public func execute<Delegate: HTTPClientResponseDelegate>(request: Request,
delegate: Delegate,
eventLoop: EventLoopPreference,
deadline: NIODeadline? = nil) -> Task<Delegate.Response> {
switch eventLoop.preference {
case .indifferent:
return self.execute(request: request, delegate: delegate, eventLoop: self.eventLoopGroup.next(), deadline: deadline)
Expand All @@ -206,17 +211,20 @@ public class HTTPClient {
}
}

private func execute<T: HTTPClientResponseDelegate>(request: Request, delegate: T, eventLoop: EventLoop, deadline: NIODeadline? = nil) -> Task<T.Response> {
let redirectHandler: RedirectHandler<T.Response>?
private func execute<Delegate: HTTPClientResponseDelegate>(request: Request,
delegate: Delegate,
eventLoop: EventLoop,
deadline: NIODeadline? = nil) -> Task<Delegate.Response> {
let redirectHandler: RedirectHandler<Delegate.Response>?
if self.configuration.followRedirects {
redirectHandler = RedirectHandler<T.Response>(request: request) { newRequest in
redirectHandler = RedirectHandler<Delegate.Response>(request: request) { newRequest in
self.execute(request: newRequest, delegate: delegate, eventLoop: eventLoop, deadline: deadline)
}
} else {
redirectHandler = nil
}

let task = Task<T.Response>(eventLoop: eventLoop)
let task = Task<Delegate.Response>(eventLoop: eventLoop)

var bootstrap = ClientBootstrap(group: eventLoop)
.channelOption(ChannelOptions.socket(SocketOptionLevel(IPPROTO_TCP), TCP_NODELAY), value: 1)
Expand Down
16 changes: 8 additions & 8 deletions Sources/AsyncHTTPClient/HTTPHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ extension HTTPClient {

internal struct TaskCancelEvent {}

internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler, ChannelOutboundHandler {
internal class TaskHandler<Delegate: HTTPClientResponseDelegate>: ChannelInboundHandler, ChannelOutboundHandler {
typealias OutboundIn = HTTPClient.Request
typealias InboundIn = HTTPClientResponsePart
typealias OutboundOut = HTTPClientRequestPart
Expand All @@ -481,16 +481,16 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
case end
}

let task: HTTPClient.Task<T.Response>
let delegate: T
let redirectHandler: RedirectHandler<T.Response>?
let task: HTTPClient.Task<Delegate.Response>
let delegate: Delegate
let redirectHandler: RedirectHandler<Delegate.Response>?
let ignoreUncleanSSLShutdown: Bool

var state: State = .idle
var pendingRead = false
var mayRead = true

init(task: HTTPClient.Task<T.Response>, delegate: T, redirectHandler: RedirectHandler<T.Response>?, ignoreUncleanSSLShutdown: Bool) {
init(task: HTTPClient.Task<Delegate.Response>, delegate: Delegate, redirectHandler: RedirectHandler<Delegate.Response>?, ignoreUncleanSSLShutdown: Bool) {
self.task = task
self.delegate = delegate
self.redirectHandler = redirectHandler
Expand Down Expand Up @@ -685,9 +685,9 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
}
}

internal struct RedirectHandler<T> {
internal struct RedirectHandler<ResponseType> {
let request: HTTPClient.Request
let execute: (HTTPClient.Request) -> HTTPClient.Task<T>
let execute: (HTTPClient.Request) -> HTTPClient.Task<ResponseType>

func redirectTarget(status: HTTPResponseStatus, headers: HTTPHeaders) -> URL? {
switch status {
Expand Down Expand Up @@ -716,7 +716,7 @@ internal struct RedirectHandler<T> {
return url.absoluteURL
}

func redirect(status: HTTPResponseStatus, to redirectURL: URL, promise: EventLoopPromise<T>) {
func redirect(status: HTTPResponseStatus, to redirectURL: URL, promise: EventLoopPromise<ResponseType>) {
let originalRequest = self.request

var convertToGet = false
Expand Down

0 comments on commit 1b31c5a

Please sign in to comment.