Skip to content
Snippets Groups Projects
Commit b74d6a68 authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

fixed on parseing of toolspecifics

parent 45e8dac0
No related branches found
No related tags found
No related merge requests found
...@@ -16,7 +16,8 @@ public class DinerosTestNode extends DiNeRosNode { ...@@ -16,7 +16,8 @@ public class DinerosTestNode extends DiNeRosNode {
super(nodeName, petriNet, "localhost", "mqtt"); super(nodeName, petriNet, "localhost", "mqtt");
} }
public DinerosTestNode(String nodeName, PetriNet petriNet, BalloonMarking marking, BalloonCallbackStorage callbackStorage) { public DinerosTestNode(String nodeName, PetriNet petriNet, BalloonMarking marking,
BalloonCallbackStorage callbackStorage) {
super(nodeName, petriNet, "localhost", "mqtt"); super(nodeName, petriNet, "localhost", "mqtt");
this.marking = marking; this.marking = marking;
this.callbackStorage = callbackStorage; this.callbackStorage = callbackStorage;
......
...@@ -38,7 +38,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -38,7 +38,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
protected BalloonMarking marking; protected BalloonMarking marking;
public BalloonCallbackStorage callbackStorage; public BalloonCallbackStorage callbackStorage;
protected ConnectedNode connectedNode; protected ConnectedNode connectedNode;
protected InputSignalConnector inputSignalConnector = new InputSignalConnector(); protected InputSignalConnector inputSignalConnector;
private boolean stopNode = false; private boolean stopNode = false;
private final Map<DinerosPlace, Publisher<String>> dinerosPublishers = new HashMap<>(); private final Map<DinerosPlace, Publisher<String>> dinerosPublishers = new HashMap<>();
...@@ -52,6 +52,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -52,6 +52,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
try { try {
marking = petriNet.initializeBalloonMarking(); marking = petriNet.initializeBalloonMarking();
callbackStorage = petriNet.initializeCallbackStorage(); callbackStorage = petriNet.initializeCallbackStorage();
inputSignalConnector = new InputSignalConnector();
PetriNetInitializer.initInputSignalConnections(petriNet, rcHost, gcProtocol, inputSignalConnector, this); PetriNetInitializer.initInputSignalConnections(petriNet, rcHost, gcProtocol, inputSignalConnector, this);
} catch (IOException | SAXException | ParserConfigurationException e) { } catch (IOException | SAXException | ParserConfigurationException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -63,7 +64,15 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -63,7 +64,15 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
List<Map<java.lang.String, Object>>> processTokenFunction) { List<Map<java.lang.String, Object>>> processTokenFunction) {
TransitionHandler transitionHandler = new TransitionHandler(priority, processTokenFunction); TransitionHandler transitionHandler = new TransitionHandler(priority, processTokenFunction);
integrateHandler(transitionId, transitionHandler);
}
public void registerHandler(java.lang.String transitionId, TransitionHandler transitionHandler) {
integrateHandler(transitionId, transitionHandler);
}
private void integrateHandler(java.lang.String transitionId, TransitionHandler transitionHandler) {
if (petriNet.getTransitionById(transitionId) == null) { if (petriNet.getTransitionById(transitionId) == null) {
return; return;
} }
...@@ -315,6 +324,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -315,6 +324,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
= petriNet.getChannelElemensByKey(PnmlConstants.CHANNEL_PLACE_TYPE_SERVER_REQ_KEY); = petriNet.getChannelElemensByKey(PnmlConstants.CHANNEL_PLACE_TYPE_SERVER_REQ_KEY);
for (java.lang.String key : channelServerReqElementMap.keySet()) { for (java.lang.String key : channelServerReqElementMap.keySet()) {
if(petriNet.getPlaceById(channelServerReqElementMap.get(key).get(0)) == null){
System.out.println("Skipping service request place: " + channelServerReqElementMap.get(key).get(0));
continue;
}
for (Page p : petriNet.allPages()) { for (Page p : petriNet.allPages()) {
if (p.getServiceName() != null && p.getServiceName().equals(key)) { if (p.getServiceName() != null && p.getServiceName().equals(key)) {
// service names are unique so we basically have a 1:1 mapping // service names are unique so we basically have a 1:1 mapping
...@@ -414,11 +429,13 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -414,11 +429,13 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
for (java.lang.String key : channelPubElementMap.keySet()) { for (java.lang.String key : channelPubElementMap.keySet()) {
for (java.lang.String placeId : channelPubElementMap.get(key)) { for (java.lang.String placeId : channelPubElementMap.get(key)) {
if(petriNet.getPlaceById(placeId) != null) {
System.out.println("[" + nodeName + "] Initializing publisher on " + placeId); System.out.println("[" + nodeName + "] Initializing publisher on " + placeId);
final Publisher<String> publisher = connectedNode.newPublisher(key, String._TYPE); final Publisher<String> publisher = connectedNode.newPublisher(key, String._TYPE);
dinerosPublishers.put(petriNet.getPlaceById(placeId).asDinerosPlace(), publisher); dinerosPublishers.put(petriNet.getPlaceById(placeId).asDinerosPlace(), publisher);
} }
} }
}
// init subscribers // init subscribers
System.out.println("[" + nodeName + "] Initializing subscribers"); System.out.println("[" + nodeName + "] Initializing subscribers");
...@@ -427,6 +444,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -427,6 +444,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
for (java.lang.String key : channelSubElementMap.keySet()) { for (java.lang.String key : channelSubElementMap.keySet()) {
for (java.lang.String placeId : channelSubElementMap.get(key)) { for (java.lang.String placeId : channelSubElementMap.get(key)) {
if(petriNet.getPlaceById(placeId) != null) {
DinerosPlace targetPlace = petriNet.getPlaceById(placeId).asDinerosPlace(); DinerosPlace targetPlace = petriNet.getPlaceById(placeId).asDinerosPlace();
Subscriber<String> subscriber = connectedNode.newSubscriber(key, String._TYPE); Subscriber<String> subscriber = connectedNode.newSubscriber(key, String._TYPE);
...@@ -445,6 +463,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -445,6 +463,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
}, petriNet.getChannelElementLimitById(placeId)); }, petriNet.getChannelElementLimitById(placeId));
} }
} }
}
System.out.println("[" + nodeName + "] Executing first marking query."); System.out.println("[" + nodeName + "] Executing first marking query.");
this.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED)); this.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED));
......
...@@ -78,12 +78,21 @@ public class PetriNetInitializer { ...@@ -78,12 +78,21 @@ public class PetriNetInitializer {
target.setMutableTransitionInformation(tri); target.setMutableTransitionInformation(tri);
} }
private static boolean signalIsUsed(PetriNet petriNet, String signalId){
for(DinerosTransition t : petriNet.allDinerosTransitions()){
if(t.getStaticTransitionInformation().
asSignalTransitionInformation().getClause().hasLiteral(signalId)){
return true;
}
}
return false;
}
public static void initInputSignalConnections(PetriNet petriNet, String host, String protocol, public static void initInputSignalConnections(PetriNet petriNet, String host, String protocol,
InputSignalConnector inputSignalConnector, DiNeRosNode node) throws IOException { InputSignalConnector inputSignalConnector, DiNeRosNode node) throws IOException {
for(String signalId : petriNet.getInputSignalDefinition().keySet()){ for(String signalId : petriNet.getInputSignalDefinition().keySet()){
if(signalIsUsed(petriNet, signalId)) {
// mqtt connections // mqtt connections
SignalConnection sc = new SignalConnection(); SignalConnection sc = new SignalConnection();
sc.setCurrentValue(Boolean.parseBoolean(petriNet.getInputSignalDefinition().get(signalId))); sc.setCurrentValue(Boolean.parseBoolean(petriNet.getInputSignalDefinition().get(signalId)));
...@@ -97,6 +106,9 @@ public class PetriNetInitializer { ...@@ -97,6 +106,9 @@ public class PetriNetInitializer {
// bytes -> node.notify(DiNeRosNode.NOTIFICATION_SIGNAL_CHANGE)); // bytes -> node.notify(DiNeRosNode.NOTIFICATION_SIGNAL_CHANGE));
inputSignalConnector.ragconnectJavaRegisterConsumer(signalId, bytes -> notifyOnSignalChange(node)); inputSignalConnector.ragconnectJavaRegisterConsumer(signalId, bytes -> notifyOnSignalChange(node));
} else {
System.out.println("Skipping unused signal: " + signalId);
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment