package edu.usc.enl.dynamicmeasurement.data.trace;
import edu.usc.enl.dynamicmeasurement.data.DataPacket;
import edu.usc.enl.dynamicmeasurement.data.FinishPacket;
import edu.usc.enl.dynamicmeasurement.data.MultiFileTraceReader;
import edu.usc.enl.dynamicmeasurement.data.PacketLoader;
import edu.usc.enl.dynamicmeasurement.model.Packet;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.concurrent.ArrayBlockingQueue;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 11/2/13
* Time: 8:31 AM
* </br>
* only keep time, srcip, size in trace
*/
public class CompressTrace {
public static void main(String[] args) throws FileNotFoundException {
String outputFolder = args[0];
new File(outputFolder).mkdirs();
for (int i = 1; i < args.length; i++) {
String arg = args[i];
File f = new File(arg).getAbsoluteFile();
if (f.isDirectory()) {
File[] files = f.listFiles();
for (File file : files) {
convertFile(outputFolder, file);
}
}
}
}
private static void convertFile(String outputFolder, File f) throws FileNotFoundException {
String outputFolder2 = outputFolder + "/" + f.getParentFile().getName();
new File(outputFolder2).mkdirs();
System.out.println(f.getAbsoluteFile());
try (PrintWriter pw = new PrintWriter(outputFolder2 + "/" + f.getName())) {
ArrayBlockingQueue<Packet> q = new ArrayBlockingQueue<>(1000);
PacketLoader loader = new PacketLoader(q, new MultiFileTraceReader(new String[]{f.getAbsolutePath()}));
loader.start();
while (true) {
Packet p = q.poll();
if (p instanceof DataPacket) {
pw.println((int) (p.getTime() / 1E6) + "," + ((DataPacket) p).getSrcIP() + "," + (int) (((DataPacket) p).getSize()));
} else if (p instanceof FinishPacket) {
break;
}
}
}
}
}