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 {
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");
this.marking = marking;
this.callbackStorage = callbackStorage;
......
......@@ -38,7 +38,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
protected BalloonMarking marking;
public BalloonCallbackStorage callbackStorage;
protected ConnectedNode connectedNode;
protected InputSignalConnector inputSignalConnector = new InputSignalConnector();
protected InputSignalConnector inputSignalConnector;
private boolean stopNode = false;
private final Map<DinerosPlace, Publisher<String>> dinerosPublishers = new HashMap<>();
......@@ -52,6 +52,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
try {
marking = petriNet.initializeBalloonMarking();
callbackStorage = petriNet.initializeCallbackStorage();
inputSignalConnector = new InputSignalConnector();
PetriNetInitializer.initInputSignalConnections(petriNet, rcHost, gcProtocol, inputSignalConnector, this);
} catch (IOException | SAXException | ParserConfigurationException e) {
e.printStackTrace();
......@@ -63,7 +64,15 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
List<Map<java.lang.String, Object>>> 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) {
return;
}
......@@ -315,6 +324,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
= petriNet.getChannelElemensByKey(PnmlConstants.CHANNEL_PLACE_TYPE_SERVER_REQ_KEY);
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()) {
if (p.getServiceName() != null && p.getServiceName().equals(key)) {
// service names are unique so we basically have a 1:1 mapping
......@@ -414,11 +429,13 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
for (java.lang.String key : channelPubElementMap.keySet()) {
for (java.lang.String placeId : channelPubElementMap.get(key)) {
if(petriNet.getPlaceById(placeId) != null) {
System.out.println("[" + nodeName + "] Initializing publisher on " + placeId);
final Publisher<String> publisher = connectedNode.newPublisher(key, String._TYPE);
dinerosPublishers.put(petriNet.getPlaceById(placeId).asDinerosPlace(), publisher);
}
}
}
// init subscribers
System.out.println("[" + nodeName + "] Initializing subscribers");
......@@ -427,6 +444,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
for (java.lang.String key : channelSubElementMap.keySet()) {
for (java.lang.String placeId : channelSubElementMap.get(key)) {
if(petriNet.getPlaceById(placeId) != null) {
DinerosPlace targetPlace = petriNet.getPlaceById(placeId).asDinerosPlace();
Subscriber<String> subscriber = connectedNode.newSubscriber(key, String._TYPE);
......@@ -445,6 +463,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
}, petriNet.getChannelElementLimitById(placeId));
}
}
}
System.out.println("[" + nodeName + "] Executing first marking query.");
this.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED));
......
......@@ -78,12 +78,21 @@ public class PetriNetInitializer {
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,
InputSignalConnector inputSignalConnector, DiNeRosNode node) throws IOException {
for(String signalId : petriNet.getInputSignalDefinition().keySet()){
if(signalIsUsed(petriNet, signalId)) {
// mqtt connections
SignalConnection sc = new SignalConnection();
sc.setCurrentValue(Boolean.parseBoolean(petriNet.getInputSignalDefinition().get(signalId)));
......@@ -97,6 +106,9 @@ public class PetriNetInitializer {
// bytes -> node.notify(DiNeRosNode.NOTIFICATION_SIGNAL_CHANGE));
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