aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-web/src/main/java/tools/refinery/language/web/generator/ModelGenerationManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/language-web/src/main/java/tools/refinery/language/web/generator/ModelGenerationManager.java')
-rw-r--r--subprojects/language-web/src/main/java/tools/refinery/language/web/generator/ModelGenerationManager.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/generator/ModelGenerationManager.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/generator/ModelGenerationManager.java
new file mode 100644
index 00000000..b0a1912c
--- /dev/null
+++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/generator/ModelGenerationManager.java
@@ -0,0 +1,41 @@
1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.language.web.generator;
7
8import org.eclipse.xtext.util.CancelIndicator;
9
10public class ModelGenerationManager {
11 private final Object lockObject = new Object();
12 private ModelGenerationWorker worker;
13 private boolean disposed;
14
15 boolean setActiveModelGenerationWorker(ModelGenerationWorker worker, CancelIndicator cancelIndicator) {
16 synchronized (lockObject) {
17 cancel();
18 if (disposed || cancelIndicator.isCanceled()) {
19 return true;
20 }
21 this.worker = worker;
22 }
23 return false;
24 }
25
26 public void cancel() {
27 synchronized (lockObject) {
28 if (worker != null) {
29 worker.cancel();
30 worker = null;
31 }
32 }
33 }
34
35 public void dispose() {
36 synchronized (lockObject) {
37 disposed = true;
38 cancel();
39 }
40 }
41}