@@ -22,7 +22,13 @@ struct Example {
2222
2323 // Using the new extension method that doesn't require type hints
2424 let privateKey = P256 . Signing. PrivateKey ( )
25- let server = NIOHTTPServer < HTTPServerClosureRequestHandler < HTTPRequestConcludingAsyncReader , HTTPResponseConcludingAsyncWriter > > (
25+ let server = NIOHTTPServer< HTTPServerClosureRequestHandler<
26+ HTTPServerRequestContext,
27+ HTTPRequestConcludingAsyncReader ,
28+ HTTPRequestConcludingAsyncReader . Underlying,
29+ HTTPResponseConcludingAsyncWriter ,
30+ HTTPResponseConcludingAsyncWriter . Underlying
31+ >>(
2632 logger: logger,
2733 configuration: . init(
2834 bindTarget: . hostAndPort( host: " 127.0.0.1 " , port: 12345 ) ,
@@ -45,7 +51,7 @@ struct Example {
4551 )
4652 )
4753 )
48- try await server. serve { request, requestBodyAndTrailers, responseSender in
54+ try await server. serve { request, requestContext , requestBodyAndTrailers, responseSender in
4955 let writer = try await responseSender. send ( HTTPResponse ( status: . ok) )
5056 try await writer. writeAndConclude ( element: " Well, hello! " . utf8. span, finalElement: nil )
5157 }
@@ -54,16 +60,22 @@ struct Example {
5460
5561// MARK: - Server Extensions
5662
57- // This has to be commented out because of the compiler bug above. Workaround doesn't apply here.
58-
5963@available ( macOS 26 . 0 , iOS 26 . 0 , watchOS 26 . 0 , tvOS 26 . 0 , visionOS 26 . 0 , * )
60- extension NIOHTTPServer where RequestHandler == HTTPServerClosureRequestHandler < HTTPRequestConcludingAsyncReader , HTTPResponseConcludingAsyncWriter > {
64+ extension NIOHTTPServer
65+ where RequestHandler == HTTPServerClosureRequestHandler <
66+ HTTPServerRequestContext ,
67+ HTTPRequestConcludingAsyncReader ,
68+ HTTPRequestConcludingAsyncReader . Underlying ,
69+ HTTPResponseConcludingAsyncWriter ,
70+ HTTPResponseConcludingAsyncWriter . Underlying
71+ > {
6172 /// Serve HTTP requests using a middleware chain built with the provided builder
6273 /// This method handles the type inference for HTTP middleware components
6374 func serve(
6475 @MiddlewareChainBuilder
6576 withMiddleware middlewareBuilder: ( ) -> some Middleware <
66- RequestResponseMiddlewareBox <
77+ RequestResponseMiddlewareBox <
78+ HTTPServerRequestContext ,
6779 HTTPRequestConcludingAsyncReader ,
6880 HTTPResponseConcludingAsyncWriter
6981 > ,
@@ -72,9 +84,10 @@ extension NIOHTTPServer where RequestHandler == HTTPServerClosureRequestHandler<
7284 ) async throws {
7385 let chain = middlewareBuilder ( )
7486
75- try await self . serve { request, reader, responseSender in
87+ try await self . serve { request, requestContext , reader, responseSender in
7688 try await chain. intercept ( input: RequestResponseMiddlewareBox (
7789 request: request,
90+ requestContext: requestContext,
7891 requestReader: reader,
7992 responseSender: responseSender
8093 ) ) { _ in }
0 commit comments