@@ -38,7 +38,7 @@ package protocol LambdaOutputEncoder {
38
38
39
39
package struct VoidEncoder : LambdaOutputEncoder {
40
40
package func encode< Output> ( _ value: Output , into buffer: inout NIOCore . ByteBuffer ) throws where Output: Encodable {
41
- fatalError ( " LambdaOutputEncoder must never be called on a void output " )
41
+
42
42
}
43
43
}
44
44
@@ -67,8 +67,8 @@ package struct LambdaHandlerAdapter<
67
67
outputWriter: consuming some LambdaResponseWriter < Output > ,
68
68
context: NewLambdaContext
69
69
) async throws {
70
- let response = try await self . handler. handle ( event, context: context)
71
- try await outputWriter. write ( response : response )
70
+ let output = try await self . handler. handle ( event, context: context)
71
+ try await outputWriter. write ( output )
72
72
}
73
73
}
74
74
@@ -118,34 +118,36 @@ package struct LambdaCodableAdapter<
118
118
) async throws {
119
119
let event = try self . decoder. decode ( Event . self, from: request)
120
120
121
- let writer = ResponseWriter < Output > ( encoder: self . encoder, streamWriter: responseWriter)
121
+ let writer = LambdaCodableResponseWriter < Output > ( encoder: self . encoder, streamWriter: responseWriter)
122
122
try await self . handler. handle ( event, outputWriter: writer, context: context)
123
123
}
124
124
}
125
125
126
126
/// A ``LambdaResponseStreamWriter`` wrapper that conforms to ``LambdaResponseWriter``.
127
- package struct ResponseWriter < Output> : LambdaResponseWriter {
128
- let underlyingStreamWriter : LambdaResponseStreamWriter
129
- let encoder : LambdaOutputEncoder
130
- var byteBuffer = ByteBuffer ( )
127
+ package struct LambdaCodableResponseWriter < Output> : LambdaResponseWriter {
128
+ @usableFromInline let underlyingStreamWriter : LambdaResponseStreamWriter
129
+ @usableFromInline let encoder : LambdaOutputEncoder
131
130
132
131
/// Initializes an instance given an encoder and an underlying ``LambdaResponseStreamWriter``.
133
132
/// - Parameters:
134
133
/// - encoder: The encoder object that will be used to encode the generic ``Output`` into a ``ByteBuffer``, which will then be passed to `streamWriter`.
135
134
/// - streamWriter: The underlying ``LambdaResponseStreamWriter`` that will be wrapped.
135
+ @inlinable
136
136
package init ( encoder: LambdaOutputEncoder , streamWriter: LambdaResponseStreamWriter ) {
137
137
self . encoder = encoder
138
138
self . underlyingStreamWriter = streamWriter
139
139
}
140
140
141
- /// Passes the `response` argument to ``LambdaResponseStreamWriter/writeAndFinish(_:)``.
142
- /// - Parameter response: The generic ``Output`` object that will be passed to ``LambdaResponseStreamWriter/writeAndFinish(_:)``.
143
- package mutating func write( response: Output ) async throws {
141
+ /// Passes the `output` argument to ``LambdaResponseStreamWriter/writeAndFinish(_:)``.
142
+ /// - Parameter output: The generic ``Output`` object that will be passed to ``LambdaResponseStreamWriter/writeAndFinish(_:)``.
143
+ @inlinable
144
+ package func write( _ output: Output ) async throws {
144
145
if Output . self == Void . self {
145
146
try await self . underlyingStreamWriter. finish ( )
146
- } else if let response = response as? Encodable {
147
- try self . encoder. encode ( response, into: & self . byteBuffer)
148
- try await self . underlyingStreamWriter. writeAndFinish ( self . byteBuffer)
147
+ } else if let output = output as? Encodable {
148
+ var outputBuffer = ByteBuffer ( )
149
+ try self . encoder. encode ( output, into: & outputBuffer)
150
+ try await self . underlyingStreamWriter. writeAndFinish ( outputBuffer)
149
151
}
150
152
}
151
153
}
0 commit comments