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.util.List;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 9/26/13
* Time: 5:49 PM
*/
public class SumReportPrefixes extends StepPacketUser {
private final List<WildcardPattern> wildcardPatterns;
private Matcher matcher;
private boolean resetOnStep;
public SumReportPrefixes(List<WildcardPattern> wildcardPatterns, boolean resetOnStep) {
matcher = new HashMatcher();
this.wildcardPatterns = wildcardPatterns;
matcher.setMonitors(this.wildcardPatterns);
this.resetOnStep = resetOnStep;
}
@Override
public void process2(DataPacket p) {
WildcardPattern match = matcher.match(p.getSrcIP());
match.setWeight(match.getWeight() + p.getSize());
}
public List<WildcardPattern> getWildcardPatterns() {
return wildcardPatterns;
}
@Override
protected void step(EpochPacket p) {
// System.out.println(p.getStep() + ":" + wildcardPatterns);
}
@Override
protected void reset() {
if (resetOnStep) {
for (WildcardPattern wildcardPattern : wildcardPatterns) {
wildcardPattern.setWeight(0);
}
}
}
@Override
public void finish(FinishPacket p) {
}
}