Browse Source

Adds connectionParts to average position if broker is deleted

Andreas T. Meyer-Berg 5 years ago
parent
commit
0623a1142f

+ 23 - 4
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/core/protocols/MQTT_protocol.java

@@ -8,6 +8,7 @@ import java.util.LinkedList;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Packet;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Port;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Protocol;
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.SmartDevice;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.protocols.packets.MQTT_packet;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.util.Pair;
 
@@ -302,7 +303,8 @@ public class MQTT_protocol implements Protocol {
 	@Override
 	public Collection<Port> getDevices(){
 		LinkedList<Port> returnDevices = new LinkedList<Port>();
-		returnDevices.add(broker);
+		if(broker!=null)
+			returnDevices.add(broker);
 		returnDevices.addAll(pubSubs);
 		returnDevices.addAll(pubs);
 		returnDevices.addAll(subs);
@@ -317,12 +319,29 @@ public class MQTT_protocol implements Protocol {
 	@Override
 	public Collection<Pair<Port,Port>> getTopology(){
 		LinkedList<Pair<Port,Port>> topology = new LinkedList<Pair<Port,Port>>();
+		Port center = broker;
+		if(broker == null){
+			int x = 0, y = 0, noP = 0;
+			for(Port p: getDevices()){
+				if(p!=null && p.getOwner()!=null){
+					x += p.getOwner().getX();
+					y += p.getOwner().getY();
+					noP++;
+				}
+			}
+			if(noP==0)
+				return topology;
+			SmartDevice deletedBroker = new SmartDevice("DeltedBroker");
+			deletedBroker.setX(((int)(x*1.0)/noP));
+			deletedBroker.setY(((int)(y*1.0)/noP));
+			center = new Port(deletedBroker, (short)-1);
+		}
 		for(Port p: pubSubs)
-			topology.add(new Pair<Port, Port>(broker, p));
+			topology.add(new Pair<Port, Port>(center, p));
 		for(Port p: pubs)
-			topology.add(new Pair<Port, Port>(broker, p));
+			topology.add(new Pair<Port, Port>(center, p));
 		for(Port p: subs)
-			topology.add(new Pair<Port, Port>(broker, p));
+			topology.add(new Pair<Port, Port>(center, p));
 		return topology;
 	}