From 97511ad3dd9fe7fb8a4349d08811a3da150bae2f Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Thu, 13 May 2021 12:49:26 +0200
Subject: [PATCH] close connections on rewind, send first non-error-operation

---
 .../inf/st/ros3rag/common/SharedMainParts.java         |  3 +++
 ros3rag.placeB/src/main/jastadd/WorldModelB.jadd       | 10 +++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java b/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java
index da23711..0f3a53e 100644
--- a/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java
+++ b/ros3rag.common/src/main/java/de/tudresden/inf/st/ros3rag/common/SharedMainParts.java
@@ -90,6 +90,9 @@ public abstract class SharedMainParts<MqttHandler extends SharedMainParts.MqttHa
   protected abstract void createSpecificMainHandlerConnections();
 
   private void rewind(String statusMessage) throws Exception {
+    if (model != null) {
+      model.ragconnectCloseConnections();
+    }
     model = createWorldModel();
 
     Scene scene = readSceneAndRobots();
diff --git a/ros3rag.placeB/src/main/jastadd/WorldModelB.jadd b/ros3rag.placeB/src/main/jastadd/WorldModelB.jadd
index 54fc355..636fce9 100644
--- a/ros3rag.placeB/src/main/jastadd/WorldModelB.jadd
+++ b/ros3rag.placeB/src/main/jastadd/WorldModelB.jadd
@@ -136,7 +136,15 @@ aspect Computation {
 
   //--- getNextOperation ---
   syn Operation WorldModelB.getNextOperation() {
-    return diffToOperations().getNumChild() > 0 ? diffToOperations().getChild(0) : new ErrorOperation("No operation computed!");
+    if (diffToOperations().getNumChild() == 0) {
+      return new ErrorOperation("No operation computed!");
+    }
+    for (Operation op : diffToOperations()) {
+      if (!op.isErrorOperation()) {
+        return op;
+      }
+    }
+    return new ErrorOperation("No executable operation found!");
   }
 
   //--- canReach ---
-- 
GitLab