package edu.usc.enl.dynamicmeasurement.algorithms.transform;
import edu.usc.enl.dynamicmeasurement.data.ConfigReader;
import edu.usc.enl.dynamicmeasurement.data.DataPacket;
import edu.usc.enl.dynamicmeasurement.model.Packet;
import edu.usc.enl.dynamicmeasurement.model.WildcardPattern;
import edu.usc.enl.dynamicmeasurement.process.PacketUser;
import edu.usc.enl.dynamicmeasurement.util.Util;
import org.w3c.dom.Element;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 9/2/13
* Time: 10:39 AM <br/>
* A special pipe for transforming the traffic
*/
public abstract class TrafficTransformer extends PacketPipe {
protected WildcardPattern filter;
private Packet lastPacket;
private String name2;
public TrafficTransformer(Element element) {
super();
Map<String, Element> childrenProperties = Util.getChildrenProperties(element, "Property");
filter = new WildcardPattern(childrenProperties.get("Filter").getAttribute(ConfigReader.PROPERTY_VALUE), 0);
}
protected TrafficTransformer(WildcardPattern filter) {
this.filter = filter;
}
public TrafficTransformer(PacketUser nextUser, WildcardPattern filter) {
super(nextUser);
this.filter = filter;
}
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
public WildcardPattern getFilter() {
return filter;
}
public boolean match(DataPacket p) {
return filter.match(p.getSrcIP());
}
@Override
protected void passPacket(Packet p) {
lastPacket = p;
super.passPacket(p);
}
public boolean sent(Packet p) {
return p == lastPacket;
}
}