Ver código fonte

Adds SimplePacketSniffer and enables PacketSniffer in Simulation

Andreas T. Meyer-Berg 5 anos atrás
pai
commit
3aa1d662ac

+ 2 - 0
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/Main.java

@@ -21,6 +21,7 @@ import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Protocol;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.SmartDevice;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.protocols.MQTT_protocol;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.simpleImplementation.SimpleLink;
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.simpleImplementation.SimplePacketSniffer;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.simpleImplementation.Manipulation_RandomMove;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.simpleImplementation.SimpleProtocol;
 import de.tu_darmstadt.tk.SmartHomeNetworkSim.view.MainFrame;
@@ -72,6 +73,7 @@ public class Main {
 		sim = controller.getSimulationController();
 	    //initializeTest();
 	    initializeMQTTTest();
+	    sim.getPacketCaptureController().addPacketCollector(new PacketCollector(new SimplePacketSniffer()));
 	    v = new MainFrame(controller);
 	    /*
 	    for(int i=0; i<10; i++)

+ 6 - 0
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/core/SimulationManager.java

@@ -134,6 +134,12 @@ public class SimulationManager extends Observable {
 		}
 		runAlgorithms(startTime);
 		packetCollectionManager.collectPackets();
+		//Run all 
+		for(PacketCollector collector:packetCollectionManager.getPacketCollectors()){
+			if(collector.getPacketAlgorithm()!=null){
+				collector.getPacketAlgorithm().processPackets(collector.getPackets());
+			}
+		}
 		packetExportManager.exportPacketsOfLastTimeStep();
 	}
 

+ 34 - 0
src/main/java/de/tu_darmstadt/tk/SmartHomeNetworkSim/core/simpleImplementation/SimplePacketSniffer.java

@@ -0,0 +1,34 @@
+package de.tu_darmstadt.tk.SmartHomeNetworkSim.core.simpleImplementation;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map.Entry;
+
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Link;
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Packet;
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.PacketSniffer;
+
+/**
+ * SimpleImplementation of the PacketSniffer interface, which counts the packets sent per link and print them to the console.
+ * 
+ *
+ * @author Andreas T. Meyer-Berg
+ */
+public class SimplePacketSniffer implements PacketSniffer {
+
+	@Override
+	public void processPackets(HashMap<Link, LinkedList<Packet>> packets) {
+		System.out.println("PacketSniffer: ");
+		if(packets==null)return;
+		/**
+		 * Print all links and their number of packets sent
+		 */
+		for(Entry<Link, LinkedList<Packet>> e:packets.entrySet()){
+			if(e == null || e.getKey() == null || e.getValue() == null)continue;
+			System.out.println(e.getKey().getName()+": "+e.getValue().size()+" Packets");
+		}
+		System.out.println("");
+
+	}
+
+}