package edu.usc.enl.dynamicmeasurement.process.scripts; import edu.usc.enl.dynamicmeasurement.algorithms.matcher.HashMatcher; import edu.usc.enl.dynamicmeasurement.algorithms.matcher.Matcher; import edu.usc.enl.dynamicmeasurement.data.DataPacket; import edu.usc.enl.dynamicmeasurement.data.FinishPacket; import edu.usc.enl.dynamicmeasurement.model.WildcardPattern; import edu.usc.enl.dynamicmeasurement.process.EpochPacket; import edu.usc.enl.dynamicmeasurement.process.StepPacketUser; import java.io.*; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created with IntelliJ IDEA. * User: masoud * Date: 9/26/13 * Time: 5:49 PM */ public class SumReportPrefixesWrite extends StepPacketUser { private final Map<WildcardPattern, PrintWriter> wildcardPatterns; private Matcher matcher; public SumReportPrefixesWrite(List<WildcardPattern> wildcardPatterns, String outputFolder) { matcher = new HashMatcher(); this.wildcardPatterns = new HashMap<>(); matcher.setMonitors(wildcardPatterns); new File(outputFolder).mkdirs(); try { for (WildcardPattern wildcardPattern : wildcardPatterns) { this.wildcardPatterns.put(wildcardPattern, new PrintWriter(new BufferedWriter(new FileWriter(outputFolder + "/" + wildcardPattern.toStringNoWeight())))); } } catch (IOException e) { e.printStackTrace(); } } @Override public void process2(DataPacket p) { WildcardPattern match = matcher.match(p.getSrcIP()); match.setWeight(match.getWeight() + p.getSize()); } @Override protected void step(EpochPacket p) { for (Map.Entry<WildcardPattern, PrintWriter> entry : wildcardPatterns.entrySet()) { entry.getValue().println(entry.getKey().getWeight()); } } @Override protected void reset() { for (WildcardPattern wildcardPattern : wildcardPatterns.keySet()) { wildcardPattern.setWeight(0); } } @Override public void finish(FinishPacket p) { for (PrintWriter printWriter : wildcardPatterns.values()) { printWriter.close(); } } }