From 39d9075679d7f7a33f0033f2ed12f58dceda3fbd Mon Sep 17 00:00:00 2001 From: Adam Fowler Date: Sat, 16 Dec 2023 08:30:44 +0000 Subject: [PATCH] Make HTTPChannelHandler.responder immutable --- Sources/HummingbirdCore/Server/HTTP/HTTP1Channel.swift | 4 ++-- .../HummingbirdCore/Server/HTTP/HTTPChannelHandler.swift | 2 +- Sources/HummingbirdHTTP2/HTTP2Channel.swift | 7 ++----- Sources/HummingbirdTLS/TLSChannelSetup.swift | 3 +-- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/Sources/HummingbirdCore/Server/HTTP/HTTP1Channel.swift b/Sources/HummingbirdCore/Server/HTTP/HTTP1Channel.swift index f16ce006a..775af9eb8 100644 --- a/Sources/HummingbirdCore/Server/HTTP/HTTP1Channel.swift +++ b/Sources/HummingbirdCore/Server/HTTP/HTTP1Channel.swift @@ -22,7 +22,7 @@ public struct HTTP1Channel: HBChannelSetup, HTTPChannelHandler { public typealias Value = NIOAsyncChannel public init( - responder: @escaping @Sendable (HBRequest, Channel) async throws -> HBResponse = { _, _ in throw HBHTTPError(.notImplemented) }, + responder: @escaping @Sendable (HBRequest, Channel) async throws -> HBResponse, additionalChannelHandlers: @escaping @Sendable () -> [any RemovableChannelHandler] = { [] } ) { self.additionalChannelHandlers = additionalChannelHandlers @@ -51,6 +51,6 @@ public struct HTTP1Channel: HBChannelSetup, HTTPChannelHandler { await handleHTTP(asyncChannel: asyncChannel, logger: logger) } - public var responder: @Sendable (HBRequest, Channel) async throws -> HBResponse + public let responder: @Sendable (HBRequest, Channel) async throws -> HBResponse let additionalChannelHandlers: @Sendable () -> [any RemovableChannelHandler] } diff --git a/Sources/HummingbirdCore/Server/HTTP/HTTPChannelHandler.swift b/Sources/HummingbirdCore/Server/HTTP/HTTPChannelHandler.swift index ae64b0a37..80411dfb0 100644 --- a/Sources/HummingbirdCore/Server/HTTP/HTTPChannelHandler.swift +++ b/Sources/HummingbirdCore/Server/HTTP/HTTPChannelHandler.swift @@ -22,7 +22,7 @@ import ServiceLifecycle /// Protocol for HTTP channels public protocol HTTPChannelHandler: HBChannelSetup { typealias Responder = @Sendable (HBRequest, Channel) async throws -> HBResponse - var responder: Responder { get set } + var responder: Responder { get } } /// Internal error thrown when an unexpected HTTP part is received eg we didn't receive diff --git a/Sources/HummingbirdHTTP2/HTTP2Channel.swift b/Sources/HummingbirdHTTP2/HTTP2Channel.swift index 3bd6577be..2101f032f 100644 --- a/Sources/HummingbirdHTTP2/HTTP2Channel.swift +++ b/Sources/HummingbirdHTTP2/HTTP2Channel.swift @@ -27,12 +27,9 @@ public struct HTTP2Channel: HTTPChannelHandler { public typealias Value = EventLoopFuture, NIOHTTP2Handler.AsyncStreamMultiplexer)>> private let sslContext: NIOSSLContext - private var http1: HTTP1Channel + private let http1: HTTP1Channel private let additionalChannelHandlers: @Sendable () -> [any RemovableChannelHandler] - public var responder: @Sendable (HBRequest, Channel) async throws -> HBResponse { - get { http1.responder } - set { http1.responder = newValue } - } + public var responder: @Sendable (HBRequest, Channel) async throws -> HBResponse { http1.responder } public init( tlsConfiguration: TLSConfiguration, diff --git a/Sources/HummingbirdTLS/TLSChannelSetup.swift b/Sources/HummingbirdTLS/TLSChannelSetup.swift index 9eb1e7e8b..90eb03a9e 100644 --- a/Sources/HummingbirdTLS/TLSChannelSetup.swift +++ b/Sources/HummingbirdTLS/TLSChannelSetup.swift @@ -32,7 +32,6 @@ public struct TLSChannel: HBChannelSetup { extension TLSChannel: HTTPChannelHandler where BaseChannel: HTTPChannelHandler { public var responder: @Sendable (HBRequest, Channel) async throws -> HBResponse { - get { baseChannel.responder } - set { baseChannel.responder = newValue } + baseChannel.responder } }