From c6423a5523711115c80cf3d17ce9c4351189efc6 Mon Sep 17 00:00:00 2001
From: SebastianEbert <sebastian.ebert@tu-dresden.de>
Date: Mon, 10 Jul 2023 14:19:46 +0200
Subject: [PATCH] simplification of callbacks

---
 .../balloonMarking/BalloonExecution.jadd      |  6 --
 .../balloonMarking/BalloonExecution.relast    |  2 +-
 .../pnml/engine/example/DinerosTestNode.java  | 26 ++------
 .../st/pnml/engine/example/SensoricsNode.java | 56 +++--------------
 .../pnml/engine/ros/DiNeRosDefaultNode.java   | 13 +---
 .../inf/st/pnml/engine/ros/DiNeRosNode.java   | 61 ++++---------------
 6 files changed, 28 insertions(+), 136 deletions(-)

diff --git a/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd b/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd
index 202bd1b..13e24c8 100644
--- a/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd
+++ b/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd
@@ -5,9 +5,6 @@ aspect BalloonExecution{
         syn FiringSelectionSuccess TransitionSelectionResult.asFiringSelectionSuccess()=null;
         eq FiringSelectionSuccess.asFiringSelectionSuccess()=this;
 
-        syn FiringSelectionWait TransitionSelectionResult.asFiringSelectionWait()=null;
-        eq FiringSelectionWait.asFiringSelectionWait()=this;
-
         syn FiringSelectionFail TransitionSelectionResult.asFiringSelectionFail()=null;
         eq FiringSelectionFail.asFiringSelectionFail()=this;
 
@@ -17,9 +14,6 @@ aspect BalloonExecution{
         syn boolean TransitionSelectionResult.isFiringSelectionSuccess()=false;
         eq FiringSelectionSuccess.isFiringSelectionSuccess()=true;
 
-        syn boolean TransitionSelectionResult.isFiringSelectionWait()=false;
-        eq FiringSelectionWait.isFiringSelectionWait()=true;
-
         syn boolean TransitionSelectionResult.isFiringSelectionFail()=false;
         eq FiringSelectionFail.isFiringSelectionFail()=true;
 
diff --git a/src/main/jastadd/engine/balloonMarking/BalloonExecution.relast b/src/main/jastadd/engine/balloonMarking/BalloonExecution.relast
index f87f2eb..73c678a 100644
--- a/src/main/jastadd/engine/balloonMarking/BalloonExecution.relast
+++ b/src/main/jastadd/engine/balloonMarking/BalloonExecution.relast
@@ -6,6 +6,6 @@ rel BalloonTransition.Transition -> Transition;
 abstract TransitionSelectionResult;
 FiringSelectionSuccess : TransitionSelectionResult;
 rel FiringSelectionSuccess.Transition -> Transition;
-FiringSelectionWait : TransitionSelectionResult ::= <WaitingTime:int>;
+// FiringSelectionWait : TransitionSelectionResult ::= <WaitingTime:int>;
 FiringSelectionFail : TransitionSelectionResult;
 FiringSelectionNone : TransitionSelectionResult;
\ No newline at end of file
diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/example/DinerosTestNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/example/DinerosTestNode.java
index d4c5d76..53c9800 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/engine/example/DinerosTestNode.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/engine/example/DinerosTestNode.java
@@ -5,6 +5,7 @@ import de.tudresden.inf.st.pnml.jastadd.model.*;
 import org.jetbrains.annotations.NotNull;
 import org.ros.concurrent.CancellableLoop;
 
+import java.util.List;
 import java.util.Set;
 
 public class DinerosTestNode extends DiNeRosNode {
@@ -39,7 +40,7 @@ public class DinerosTestNode extends DiNeRosNode {
     }
 
     @NotNull
-    private TransitionSelectionResult fireFirstEnabled(Set<Transition> enabledTransitions) {
+    private TransitionSelectionResult fireFirstEnabled(List<Transition> enabledTransitions) {
 
         System.out.println("Calling fireFirstEnabled");
         System.out.println(marking.print());
@@ -52,35 +53,18 @@ public class DinerosTestNode extends DiNeRosNode {
             break;
         }
 
-        if(enabledTransitions.size() == 0){
-            FiringSelectionWait fsw = new FiringSelectionWait();
-            fsw.setWaitingTime(1000);
-            return fsw;
-        }
-
+        if(enabledTransitions.size() == 0){ return new FiringSelectionNone(); }
         return fsc;
     }
 
     @Override
-    protected TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions) {
-        System.out.println("Calling onMarkingChange");
-        return fireFirstEnabled(enabledTransitions);
-    }
-
-    @Override
-    protected TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions) {
-        System.out.println("Calling onSignalChange");
-        return fireFirstEnabled(enabledTransitions);
-    }
-
-    @Override
-    protected TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions) {
+    protected TransitionSelectionResult onChange(List<Transition> enabledTransitions) {
         System.out.println("Calling onWaitEnded");
         return fireFirstEnabled(enabledTransitions);
     }
 
     @Override
-    protected TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions) {
+    protected TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions) {
         System.out.println("Calling onStartupEnded");
         return fireFirstEnabled(enabledTransitions);
     }
diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/example/SensoricsNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/example/SensoricsNode.java
index 99dbc8a..a97e3c5 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/engine/example/SensoricsNode.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/engine/example/SensoricsNode.java
@@ -4,7 +4,8 @@ import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
 import de.tudresden.inf.st.pnml.jastadd.model.*;
 import org.jetbrains.annotations.NotNull;
 
-import java.util.Set;
+import java.util.List;
+import java.util.Random;
 
 public class SensoricsNode extends DiNeRosNode {
 
@@ -16,61 +17,20 @@ public class SensoricsNode extends DiNeRosNode {
     protected void nodeLoop() {}
 
     @NotNull
-    private TransitionSelectionResult fireFirstEnabled(Set<Transition> enabledTransitions) {
-
-
+    private TransitionSelectionResult fireRandomEnabledTransition(List<Transition> enabledTransitions) {
         FiringSelectionSuccess fsc = new FiringSelectionSuccess();
-
-        for (Transition t : enabledTransitions) {
-            fsc.setTransition(t);
-            break;
-        }
-
+        fsc.setTransition(enabledTransitions.get(new Random().nextInt(enabledTransitions.size())));
         return fsc;
     }
 
     @Override
-    protected TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions) {
-
-        for(Transition t : enabledTransitions){
-
-            if(t.getId().equals("GetSensorData")){
-                FiringSelectionSuccess sel = new FiringSelectionSuccess();
-                sel.setTransition(t);
-                return sel;
-            }
-
-            if(t.getId().equals("ProcessSensorData")){
-                FiringSelectionWait sel = new FiringSelectionWait();
-                sel.setWaitingTime(100);
-                return sel;
-            }
-        }
-
-        return new FiringSelectionNone();
-    }
-
-    @Override
-    protected TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions) {
-
-        for(Transition t : enabledTransitions){
-            if(t.getId().equals("GetSensorData")){
-                FiringSelectionSuccess sel = new FiringSelectionSuccess();
-                sel.setTransition(t);
-                return sel;
-            }
-        }
-
-        return new FiringSelectionNone();
-    }
-
-    @Override
-    protected TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions) {
-        return fireFirstEnabled(enabledTransitions);
+    protected TransitionSelectionResult onChange(List<Transition> enabledTransitions) {
+        return enabledTransitions.size() == 0 ?
+                new FiringSelectionNone() : fireRandomEnabledTransition(enabledTransitions);
     }
 
     @Override
-    protected TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions) {
+    protected TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions) {
         return new FiringSelectionNone();
     }
 }
diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java
index ac5bd70..bfbbd91 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java
@@ -2,6 +2,7 @@ package de.tudresden.inf.st.pnml.engine.ros;
 
 import de.tudresden.inf.st.pnml.jastadd.model.*;
 
+import java.util.List;
 import java.util.Set;
 
 public class DiNeRosDefaultNode extends DiNeRosNode{
@@ -23,19 +24,11 @@ public class DiNeRosDefaultNode extends DiNeRosNode{
 
     }
 
-    protected TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions){
+    protected TransitionSelectionResult onChange(List<Transition> enabledTransitions){
         return null;
     }
 
-    protected TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions){
-        return null;
-    }
-
-    protected TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions){
-        return null;
-    }
-
-    protected TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions){
+    protected TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions){
         return null;
     }
 }
diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java
index 264194d..9dc60a9 100644
--- a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java
+++ b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java
@@ -28,7 +28,6 @@ import std_msgs.String;
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.IOException;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 
 public abstract class DiNeRosNode extends AbstractNodeMain {
 
@@ -89,17 +88,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
 
     public synchronized void notify(DiNeRosEvent event) {
 
-        Set<Transition> signalFilteredTransitions = getSignalFilteredTransitions();
+        List<Transition> signalFilteredTransitions = getSignalFilteredTransitions();
 
         switch (event.eventType) {
             case DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE:
-                onMarkingChangeInternal(signalFilteredTransitions);
-                break;
             case DiNeRosEventTypes.NOTIFICATION_SIGNAL_CHANGE:
-                onSignalChangeInternal(signalFilteredTransitions);
-                break;
-            case DiNeRosEventTypes.NOTIFICATION_WAIT_ENDED:
-                onWaitEndedInternal(signalFilteredTransitions);
+                onChange(signalFilteredTransitions);
                 break;
             case DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED:
                 onStartupEndedInternal(signalFilteredTransitions);
@@ -187,8 +181,8 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
     }
 
     @NotNull
-    protected Set<Transition> getSignalFilteredTransitions() {
-        Set<Transition> signalFilteredTransitions = new HashSet<>();
+    protected List<Transition> getSignalFilteredTransitions() {
+        List<Transition> signalFilteredTransitions = new ArrayList<>();
 
         ClauseValuesDefinition clauseValuesDefinition = new ClauseValuesDefinition();
 
@@ -217,19 +211,8 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
     }
 
     private void getTransitionSelectionResult(TransitionSelectionResult res) {
-        if (res.isFiringSelectionWait()) {
-            try {
-                TimeUnit.MILLISECONDS.sleep(res.asFiringSelectionWait().getWaitingTime());
-                onWaitEndedInternal(getSignalFilteredTransitions());
-                return;
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
 
-        if(res.isFiringSelectionNone()){
-            return;
-        }
+        if(res.isFiringSelectionNone()){ return; }
 
         if (res.isFiringSelectionFail()) {
             System.err.println("[DiNeROS-Node] [" + nodeName + "] Firing selection action failed!");
@@ -243,7 +226,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
 
     }
 
-    private void onStartupEndedInternal(Set<Transition> enabledTransitions) {
+    private void onStartupEndedInternal(List<Transition> enabledTransitions) {
 
         System.out.println("Calling onStartupEndedInternal");
 
@@ -251,39 +234,17 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
         getTransitionSelectionResult(res);
     }
 
-    private void onMarkingChangeInternal(Set<Transition> enabledTransitions) {
+    private void onChangeInternal(List<Transition> enabledTransitions) {
 
-        System.out.println("Calling onMarkingChangeInternal");
+        System.out.println("Calling onChangeInternal");
 
-        TransitionSelectionResult res = onMarkingChange(enabledTransitions);
+        TransitionSelectionResult res = onChange(enabledTransitions);
         getTransitionSelectionResult(res);
     }
 
-    private void onSignalChangeInternal(Set<Transition> enabledTransitions) {
-
-        System.out.println("Calling onSignalChangeInternal");
-
-        TransitionSelectionResult res = onSignalChange(enabledTransitions);
-        getTransitionSelectionResult(res);
-
-    }
-
-    private void onWaitEndedInternal(Set<Transition> enabledTransitions) {
-
-        System.out.println("Calling onWaitEndedInternal");
-
-        TransitionSelectionResult res = onWaitEnded(enabledTransitions);
-        getTransitionSelectionResult(res);
-
-    }
-
-    protected abstract TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions);
-
-    protected abstract TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions);
-
-    protected abstract TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions);
+    protected abstract TransitionSelectionResult onChange(List<Transition> enabledTransitions);
 
-    protected abstract TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions);
+    protected abstract TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions);
 
     @Override
     public GraphName getDefaultNodeName() {
-- 
GitLab