#pragma once #include #include #include // Breakdown traffic through the network according to category class traffic_breakdown { public: traffic_breakdown(const std::string &network_name) : m_network_name(network_name) { } // print the stats void print(FILE* fout); // record the amount and type of traffic introduced by this mem_fetch object void record_traffic(class mem_fetch * mf, unsigned int size); protected: std::string m_network_name; /// helper functions to identify the type of traffic sent std::string classify_memfetch(class mem_fetch * mf); /// helper functions to identify the size of traffic sent unsigned int packet_size(class mem_fetch * mf); typedef std::string mf_packet_type; // use string so that it remains extensible typedef unsigned int mf_packet_size; typedef std::map < mf_packet_size, unsigned int > traffic_class_t; typedef std::map < mf_packet_type, traffic_class_t > traffic_stat_t; traffic_stat_t m_stats; };