-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathLambdaDurableFunctionsClient.java
More file actions
49 lines (41 loc) · 2 KB
/
Copy pathLambdaDurableFunctionsClient.java
File metadata and controls
49 lines (41 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package com.amazonaws.lambda.durable.client;
import java.util.List;
import java.util.Objects;
import software.amazon.awssdk.services.lambda.LambdaClient;
import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionRequest;
import software.amazon.awssdk.services.lambda.model.CheckpointDurableExecutionResponse;
import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateRequest;
import software.amazon.awssdk.services.lambda.model.GetDurableExecutionStateResponse;
import software.amazon.awssdk.services.lambda.model.OperationUpdate;
public class LambdaDurableFunctionsClient implements DurableExecutionClient {
private final LambdaClient lambdaClient;
/**
* Creates a LambdaDurableFunctionsClient with the provided LambdaClient.
*
* @param lambdaClient LambdaClient instance to use for backend communication
* @throws NullPointerException if lambdaClient is null
*/
public LambdaDurableFunctionsClient(LambdaClient lambdaClient) {
this.lambdaClient = Objects.requireNonNull(lambdaClient, "LambdaClient cannot be null");
}
@Override
public CheckpointDurableExecutionResponse checkpoint(String arn, String token, List<OperationUpdate> updates) {
var request = CheckpointDurableExecutionRequest.builder()
.durableExecutionArn(arn)
.checkpointToken(token)
.updates(updates)
.build();
return lambdaClient.checkpointDurableExecution(request);
}
@Override
public GetDurableExecutionStateResponse getExecutionState(String arn, String checkpointToken, String marker) {
var request = GetDurableExecutionStateRequest.builder()
.durableExecutionArn(arn)
.checkpointToken(checkpointToken)
.marker(marker)
.build();
return lambdaClient.getDurableExecutionState(request);
}
}