in analyzers/src/breakdown/representer.cpp [37:77]
void Representer::flush_statistics(const Statistics& statistics)
{
out << "### Breakdown analyzer ###" << std::endl
<< cmd_representer->protocol_name() << " protocol";
if(statistics.has_session())
{
out << std::endl;
statistics.for_each_procedure([&](const BreakdownCounter& breakdown, size_t procedure) {
onProcedureInfoPrinted(out, breakdown, procedure);
size_t procedure_count = breakdown[procedure].get_count();
out.width(space_for_cmd_name);
out << std::left
<< cmd_representer->command_name(procedure);
out.width(5);
out << std::right
<< procedure_count;
out.width(7);
out.setf(std::ios::fixed, std::ios::floatfield);
out.precision(2);
out << (breakdown.get_total_count() ? ((1.0 * procedure_count / breakdown.get_total_count()) * 100.0) : 0);
out.setf(std::ios::fixed | std::ios::scientific, std::ios::floatfield);
out << '%' << std::endl;
});
out << "Per connection info: " << std::endl;
statistics.for_each_session([&](const Session& session) {
std::stringstream ssession;
print_session(ssession, session);
print_per_session(statistics, session, ssession.str());
std::ofstream file("breakdown_" + ssession.str() + ".dat", std::ios::out | std::ios::trunc);
store_per_session(file, statistics, session, ssession.str());
});
}
else
{
out << ": Data transmission has not been detected." << std::endl;
}
}