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