Skip to content

Commit 6bf879c

Browse files
committed
Refactor
1 parent b4a6a4f commit 6bf879c

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

Sources/AWSLambdaRuntimeCore/NewLambda+JSON.swift

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ package protocol LambdaOutputEncoder {
3838

3939
package struct VoidEncoder: LambdaOutputEncoder {
4040
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+
4242
}
4343
}
4444

@@ -67,8 +67,8 @@ package struct LambdaHandlerAdapter<
6767
outputWriter: consuming some LambdaResponseWriter<Output>,
6868
context: NewLambdaContext
6969
) 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)
7272
}
7373
}
7474

@@ -118,34 +118,36 @@ package struct LambdaCodableAdapter<
118118
) async throws {
119119
let event = try self.decoder.decode(Event.self, from: request)
120120

121-
let writer = ResponseWriter<Output>(encoder: self.encoder, streamWriter: responseWriter)
121+
let writer = LambdaCodableResponseWriter<Output>(encoder: self.encoder, streamWriter: responseWriter)
122122
try await self.handler.handle(event, outputWriter: writer, context: context)
123123
}
124124
}
125125

126126
/// 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
131130

132131
/// Initializes an instance given an encoder and an underlying ``LambdaResponseStreamWriter``.
133132
/// - Parameters:
134133
/// - encoder: The encoder object that will be used to encode the generic ``Output`` into a ``ByteBuffer``, which will then be passed to `streamWriter`.
135134
/// - streamWriter: The underlying ``LambdaResponseStreamWriter`` that will be wrapped.
135+
@inlinable
136136
package init(encoder: LambdaOutputEncoder, streamWriter: LambdaResponseStreamWriter) {
137137
self.encoder = encoder
138138
self.underlyingStreamWriter = streamWriter
139139
}
140140

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 {
144145
if Output.self == Void.self {
145146
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)
149151
}
150152
}
151153
}

Sources/AWSLambdaRuntimeCore/NewLambdaHandlers.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ package protocol LambdaResponseWriter<Output>: ~Copyable {
115115
/// to the AWS Lambda response endpoint.
116116
/// This function simply serves as a mechanism to return the computed result from a handler function
117117
/// without an explicit `return`.
118-
mutating func write(response: Output) async throws
118+
func write(_ output: Output) async throws
119119
}
120120

121121
/// A ``StreamingLambdaHandler`` conforming handler object that can be constructed with a closure.

0 commit comments

Comments
 (0)