package edu.usc.enl.dynamicmeasurement.data;
import edu.usc.enl.dynamicmeasurement.model.Packet;
import java.util.StringTokenizer;
/**
* Created with IntelliJ IDEA.
* User: Masoud
* Date: 1/24/13
* Time: 9:52 AM <br/>
* The main type of packets that represent a network packet read from trace files
*/
public class DataPacket extends Packet {
private long srcIP;
private long dstIP;
private int srcPort;
private int dstPort;
private int protocol;
private double size;
public DataPacket(long time, long srcIP, long dstIP, int srcPort, int dstPort, int protocol, double size) {
super(time);
this.srcIP = srcIP;
this.dstIP = dstIP;
this.srcPort = srcPort;
this.dstPort = dstPort;
this.protocol = protocol;
this.size = size;
}
public DataPacket(StringTokenizer st) throws PacketParseException {
super();
fill(st);
}
public static long getSrcIP(StringTokenizer st) {
st.nextToken();
return Long.parseLong(st.nextToken());
}
public void fill(StringTokenizer st) throws PacketParseException {
try {
setTime(Long.parseLong(st.nextToken()));
srcIP = Long.parseLong(st.nextToken());
dstIP = Long.parseLong(st.nextToken());
if (st.hasMoreTokens()) {
srcPort = Integer.parseInt(st.nextToken());
dstPort = Integer.parseInt(st.nextToken());
String s = st.nextToken();
protocol = s.equals("null") ? 0 : Integer.parseInt(s);
size = Double.parseDouble(st.nextToken());
} else {
//it is a compressed format
//time *= 1000000;
size = dstIP;
dstIP = 0;
srcPort = 0;
dstPort = 0;
protocol = 0;
}
} catch (NumberFormatException e) {
throw new PacketParseException(e);
}
}
public String print() {
String comma = ",";
return time + comma + srcIP + comma + dstIP + comma + srcPort + comma + dstPort + comma + protocol + comma + size;
}
public long getSrcIP() {
return srcIP;
}
public void setSrcIP(long srcIP) {
this.srcIP = srcIP;
}
public long getDstIP() {
return dstIP;
}
public int getSrcPort() {
return srcPort;
}
public int getDstPort() {
return dstPort;
}
public int getProtocol() {
return protocol;
}
public double getSize() {
return size;
}
public void setSize(double size) {
this.size = size;
}
public void setTime(long time) {
this.time = time;
}
public void setDstIP(long dstIP) {
this.dstIP = dstIP;
}
public void setDstPort(int dstPort) {
this.dstPort = dstPort;
}
public static class PacketParseException extends Exception {
public PacketParseException(Throwable cause) {
super(cause);
}
}
}