@@ -20,42 +20,46 @@ import NIO
20
20
21
21
extension Lambda {
22
22
public static func test( _ closure: @escaping StringLambdaClosure ,
23
- with payload: String ,
24
- _ body: @escaping ( Result < String , Error > ) -> Void ) {
25
- Self . test ( StringLambdaClosureWrapper ( closure) , with: payload, body)
23
+ with payload: String ) throws -> String {
24
+ try Self . test ( StringLambdaClosureWrapper ( closure) , with: payload)
26
25
}
27
26
28
27
public static func test( _ closure: @escaping StringVoidLambdaClosure ,
29
- with payload: String ,
30
- _ body: @escaping ( Result < Void , Error > ) -> Void ) {
31
- Self . test ( StringVoidLambdaClosureWrapper ( closure) , with: payload, body)
28
+ with payload: String ) throws {
29
+ _ = try Self . test ( StringVoidLambdaClosureWrapper ( closure) , with: payload)
32
30
}
33
31
34
- public static func test< In: Decodable , Out: Encodable > ( _ closure: @escaping CodableLambdaClosure < In , Out > ,
35
- with payload: In ,
36
- _ body: @escaping ( Result < Out , Error > ) -> Void ) {
37
- Self . test ( CodableLambdaClosureWrapper ( closure) , with: payload, body)
32
+ public static func test< In: Decodable , Out: Encodable > (
33
+ _ closure: @escaping CodableLambdaClosure < In , Out > ,
34
+ with payload: In
35
+ ) throws -> Out {
36
+ try Self . test ( CodableLambdaClosureWrapper ( closure) , with: payload)
38
37
}
39
38
40
39
public static func test< In: Decodable > ( _ closure: @escaping CodableVoidLambdaClosure < In > ,
41
- with payload: In ,
42
- _ body: @escaping ( Result < Void , Error > ) -> Void ) {
43
- Self . test ( CodableVoidLambdaClosureWrapper ( closure) , with: payload, body)
40
+ with payload: In ) throws {
41
+ _ = try Self . test ( CodableVoidLambdaClosureWrapper ( closure) , with: payload)
44
42
}
45
43
46
- public static func test< In, Out, Handler: EventLoopLambdaHandler > ( _ handler: Handler ,
47
- with payload: In ,
48
- _ body: @escaping ( Result < Out , Error > ) -> Void ) where Handler. In == In , Handler. Out == Out {
44
+ public static func test< In, Out, Handler: EventLoopLambdaHandler > (
45
+ _ handler: Handler ,
46
+ with payload: In
47
+ ) throws -> Out where Handler. In == In , Handler. Out == Out {
49
48
let logger = Logger ( label: " test " )
50
49
let eventLoopGroup = MultiThreadedEventLoopGroup ( numberOfThreads: 1 )
50
+ let eventLoop = eventLoopGroup. next ( )
51
+
51
52
let context = Context ( requestId: " \( DispatchTime . now ( ) . uptimeNanoseconds) " ,
52
53
traceId: " Root= \( DispatchTime . now ( ) . uptimeNanoseconds) ;Parent= \( DispatchTime . now ( ) . uptimeNanoseconds) ;Sampled=1 " ,
53
54
invokedFunctionArn: " arn:aws:lambda:us-west-1: \( DispatchTime . now ( ) . uptimeNanoseconds) :function:custom-runtime " ,
54
55
deadline: . now( ) + 5 ,
55
56
logger: logger,
56
- eventLoop: eventLoopGroup. next ( ) )
57
- handler. handle ( context: context, payload: payload) . whenComplete { result in
58
- body ( result)
57
+ eventLoop: eventLoop)
58
+
59
+ let future = eventLoop. flatSubmit {
60
+ handler. handle ( context: context, payload: payload)
59
61
}
62
+
63
+ return try future. wait ( )
60
64
}
61
65
}
0 commit comments