analysis/trace_reader.cpp (38 lines of code) (raw):

#include <cstdio> #include <unistd.h> #include <unordered_map> #include <unordered_set> #include "trace-format.h" #include "trace_filter.hpp" #include "utils.hpp" #include "sim-setting.h" using namespace ns3; using namespace std; int main(int argc, char** argv){ if (argc != 2 && argc != 3){ printf("Usage: ./trace_reader <trace_file> [filter_expr]\n"); return 0; } FILE* file = fopen(argv[1], "r"); TraceFilter f; if (argc == 3){ f.parse(argv[2]); if (f.root == NULL){ printf("Invalid filter\n"); return 0; } } //printf("filter: %s\n", f.str().c_str()); // first read SimSetting SimSetting sim_setting; sim_setting.Deserialize(file); #if 0 // print sim_setting for (auto i : sim_setting.port_speed) for (auto j : i.second) printf("%u,%u:%lu\n", i.first, j.first, j.second); #endif // read trace TraceFormat tr; while (tr.Deserialize(file) > 0){ if (!f.test(tr)) continue; print_trace(tr); } }