Skip to content

Commit 88bc191

Browse files
l46kokcopybara-github
authored andcommitted
Add async concurrency gate and re-evaluation coordinator
PiperOrigin-RevId: 974934413
1 parent 045e576 commit 88bc191

10 files changed

Lines changed: 1834 additions & 24 deletions

File tree

‎runtime/planner/BUILD.bazel‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,27 @@ java_library(
2121
visibility = ["//:internal"],
2222
exports = ["//runtime/src/main/java/dev/cel/runtime/planner:planned_program"],
2323
)
24+
25+
java_library(
26+
name = "async_gate",
27+
visibility = ["//:internal"],
28+
exports = ["//runtime/src/main/java/dev/cel/runtime/planner:async_gate"],
29+
)
30+
31+
cel_android_library(
32+
name = "async_gate_android",
33+
visibility = ["//:internal"],
34+
exports = ["//runtime/src/main/java/dev/cel/runtime/planner:async_gate_android"],
35+
)
36+
37+
java_library(
38+
name = "async_completion_coordinator",
39+
visibility = ["//:internal"],
40+
exports = ["//runtime/src/main/java/dev/cel/runtime/planner:async_completion_coordinator"],
41+
)
42+
43+
cel_android_library(
44+
name = "async_completion_coordinator_android",
45+
visibility = ["//:internal"],
46+
exports = ["//runtime/src/main/java/dev/cel/runtime/planner:async_completion_coordinator_android"],
47+
)

‎runtime/src/main/java/dev/cel/runtime/BUILD.bazel‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,6 @@ java_library(
855855
"//runtime:activation",
856856
"//runtime:interpretable",
857857
"//runtime:proto_message_activation_factory",
858-
"//runtime:resolved_overload",
859858
"//runtime/planner:planned_program",
860859
"//runtime/planner:program_planner",
861860
"//runtime/standard:type",

‎runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java‎

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -112,22 +112,7 @@ public Program createProgram(CelAbstractSyntaxTree ast) throws CelEvaluationExce
112112
return toRuntimeProgram(planner().plan(ast));
113113
}
114114

115-
private static final CelFunctionResolver EMPTY_FUNCTION_RESOLVER =
116-
new CelFunctionResolver() {
117-
@Override
118-
public Optional<CelResolvedOverload> findOverloadMatchingArgs(
119-
String functionName, Collection<String> overloadIds, Object[] args) {
120-
return Optional.empty();
121-
}
122-
123-
@Override
124-
public Optional<CelResolvedOverload> findOverloadMatchingArgs(
125-
String functionName, Object[] args) {
126-
return Optional.empty();
127-
}
128-
};
129-
130-
public Program toRuntimeProgram(dev.cel.runtime.Program program) {
115+
private Program toRuntimeProgram(dev.cel.runtime.Program program) {
131116
return new Program() {
132117

133118
@Override
@@ -152,7 +137,7 @@ public Object eval(Message message) throws CelEvaluationException {
152137
return plannedProgram.evalOrThrow(
153138
plannedProgram.interpretable(),
154139
ProtoMessageActivationFactory.fromProto(message, plannedProgram.options()),
155-
EMPTY_FUNCTION_RESOLVER,
140+
CelFunctionResolver.EMPTY,
156141
/* partialVars= */ null,
157142
/* listener= */ null);
158143
}
@@ -215,14 +200,14 @@ public ListenableFuture<Object> evalAsync(PartialVars partialVars) {
215200
@Override
216201
public Object trace(CelEvaluationListener listener) throws CelEvaluationException {
217202
return ((PlannedProgram) program)
218-
.trace(GlobalResolver.EMPTY, EMPTY_FUNCTION_RESOLVER, null, listener);
203+
.trace(GlobalResolver.EMPTY, CelFunctionResolver.EMPTY, null, listener);
219204
}
220205

221206
@Override
222207
public Object trace(Map<String, ?> mapValue, CelEvaluationListener listener)
223208
throws CelEvaluationException {
224209
return ((PlannedProgram) program)
225-
.trace(Activation.copyOf(mapValue), EMPTY_FUNCTION_RESOLVER, null, listener);
210+
.trace(Activation.copyOf(mapValue), CelFunctionResolver.EMPTY, null, listener);
226211
}
227212

228213
@Override
@@ -232,7 +217,7 @@ public Object trace(Message message, CelEvaluationListener listener)
232217
return plannedProgram.evalOrThrow(
233218
plannedProgram.interpretable(),
234219
ProtoMessageActivationFactory.fromProto(message, plannedProgram.options()),
235-
EMPTY_FUNCTION_RESOLVER,
220+
CelFunctionResolver.EMPTY,
236221
/* partialVars= */ null,
237222
listener);
238223
}
@@ -243,7 +228,7 @@ public Object trace(CelVariableResolver resolver, CelEvaluationListener listener
243228
return ((PlannedProgram) program)
244229
.trace(
245230
(name) -> resolver.find(name).orElse(null),
246-
EMPTY_FUNCTION_RESOLVER,
231+
CelFunctionResolver.EMPTY,
247232
null,
248233
listener);
249234
}
@@ -278,13 +263,13 @@ public Object trace(PartialVars partialVars, CelEvaluationListener listener)
278263
return ((PlannedProgram) program)
279264
.trace(
280265
(name) -> partialVars.resolver().find(name).orElse(null),
281-
EMPTY_FUNCTION_RESOLVER,
266+
CelFunctionResolver.EMPTY,
282267
partialVars,
283268
listener);
284269
}
285270

286271
@Override
287-
public Object advanceEvaluation(UnknownContext context) throws CelEvaluationException {
272+
public Object advanceEvaluation(UnknownContext context) {
288273
throw new UnsupportedOperationException("Unsupported operation.");
289274
}
290275
};

0 commit comments

Comments
 (0)