From 4d365b54dad8d066bba2a2b1a05092b4802b9970 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Mon, 11 Sep 2023 19:22:26 +0200 Subject: feat: cancellation token for ModelStore --- .../language/web/semantics/CancellableSeed.java | 99 ---------------------- .../language/web/semantics/SemanticsWorker.java | 9 +- 2 files changed, 4 insertions(+), 104 deletions(-) delete mode 100644 subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/CancellableSeed.java (limited to 'subprojects/language-web/src/main/java') diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/CancellableSeed.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/CancellableSeed.java deleted file mode 100644 index aa14f39d..00000000 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/CancellableSeed.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023 The Refinery Authors - * - * SPDX-License-Identifier: EPL-2.0 - */ -package tools.refinery.language.web.semantics; - -import tools.refinery.store.map.AnyVersionedMap; -import tools.refinery.store.map.Cursor; -import tools.refinery.store.reasoning.representation.PartialSymbol; -import tools.refinery.store.reasoning.seed.ModelSeed; -import tools.refinery.store.reasoning.seed.Seed; -import tools.refinery.store.tuple.Tuple; -import tools.refinery.viatra.runtime.CancellationToken; - -import java.util.Set; - -class CancellableSeed implements Seed { - private final CancellationToken cancellationToken; - private final Seed seed; - - private CancellableSeed(CancellationToken cancellationToken, Seed seed) { - this.cancellationToken = cancellationToken; - this.seed = seed; - } - - @Override - public int arity() { - return seed.arity(); - } - - @Override - public Class valueType() { - return seed.valueType(); - } - - @Override - public T reducedValue() { - return seed.reducedValue(); - } - - @Override - public T get(Tuple key) { - return seed.get(key); - } - - @Override - public Cursor getCursor(T defaultValue, int nodeCount) { - return new CancellableCursor<>(cancellationToken, seed.getCursor(defaultValue, nodeCount)); - } - - public static ModelSeed wrap(CancellationToken cancellationToken, ModelSeed modelSeed) { - var builder = ModelSeed.builder(modelSeed.getNodeCount()); - for (var partialSymbol : modelSeed.getSeededSymbols()) { - wrap(cancellationToken, (PartialSymbol) partialSymbol, modelSeed, builder); - } - return builder.build(); - } - - private static void wrap(CancellationToken cancellationToken, PartialSymbol partialSymbol, - ModelSeed originalModelSeed, ModelSeed.Builder builder) { - var originalSeed = originalModelSeed.getSeed(partialSymbol); - builder.seed(partialSymbol, new CancellableSeed<>(cancellationToken, originalSeed)); - } - - private record CancellableCursor(CancellationToken cancellationToken, Cursor cursor) - implements Cursor { - @Override - public Tuple getKey() { - return cursor.getKey(); - } - - @Override - public T getValue() { - return cursor.getValue(); - } - - @Override - public boolean isTerminated() { - return cursor.isTerminated(); - } - - @Override - public boolean move() { - cancellationToken.checkCancelled(); - return cursor.move(); - } - - @Override - public boolean isDirty() { - return cursor.isDirty(); - } - - @Override - public Set getDependingMaps() { - return cursor.getDependingMaps(); - } - } -} diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java index c745d86e..33b1c4fb 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/SemanticsWorker.java @@ -34,7 +34,7 @@ import tools.refinery.store.reasoning.representation.PartialRelation; import tools.refinery.store.reasoning.translator.TranslationException; import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; import tools.refinery.store.tuple.Tuple; -import tools.refinery.viatra.runtime.CancellationToken; +import tools.refinery.store.util.CancellationToken; import java.util.ArrayList; import java.util.TreeMap; @@ -74,8 +74,8 @@ class SemanticsWorker implements Callable { @Override public SemanticsResult call() { var builder = ModelStore.builder() - .with(ViatraModelQueryAdapter.builder() - .cancellationToken(cancellationToken)) + .cancellationToken(cancellationToken) + .with(ViatraModelQueryAdapter.builder()) .with(PropagationAdapter.builder()) .with(ReasoningAdapter.builder() .requiredInterpretations(Concreteness.PARTIAL)); @@ -91,8 +91,7 @@ class SemanticsWorker implements Callable { cancellationToken.checkCancelled(); var store = builder.build(); cancellationToken.checkCancelled(); - var cancellableModelSeed = CancellableSeed.wrap(cancellationToken, modelSeed); - var model = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(cancellableModelSeed); + var model = store.getAdapter(ReasoningStoreAdapter.class).createInitialModel(modelSeed); cancellationToken.checkCancelled(); var partialInterpretation = getPartialInterpretation(initializer, model); -- cgit v1.2.3-54-g00ecf