inline void dump_timers() { decltype(auto) timers = get_timers().timers; //Sort the timers by duration (DESC) std::sort(timers.begin(), timers.end(), [](auto& left, auto& right) { return left.duration > right.duration; }); // Print all the used timers for (decltype(auto) timer : timers) { if (timer.name) { std::cout << timer.name << "(" << timer.count << ") : " << duration_str(timer.duration) << std::endl; } } }
static int print_banner_page(const serve_state_t state, const unsigned char *banner_path, int run_id, int user_id, int is_privileged) { struct run_entry info; FILE *f = 0; time_t start_time; unsigned char *s; int i, variant, virt_variant; struct teamdb_export teaminfo; if (run_id < 0 || run_id >= run_get_total(state->runlog_state)) goto cleanup; run_get_entry(state->runlog_state, run_id, &info); if (info.status == RUN_VIRTUAL_START || info.status == RUN_VIRTUAL_STOP || info.status == RUN_EMPTY) { return -1; } if (teamdb_export_team(state->teamdb_state, info.user_id, &teaminfo) < 0) return -1; start_time = run_get_start_time(state->runlog_state); if (!(f = fopen(banner_path, "w"))) goto cleanup; fprintf(f, "\n\n\n\n\n\n\n\n\n\n"); fprintf(f, "Run ID: %d\n", info.run_id); fprintf(f, "Submission time: %s\n", duration_str(1, info.time, start_time, 0, 0)); fprintf(f, "Contest time: %s\n", duration_str(0, info.time, start_time, 0, 0)); if (is_privileged) { fprintf(f, "Originator IP: %s\n", xml_unparse_ip(info.a.ip)); } fprintf(f, "Size: %u\n", info.size); if (is_privileged) { fprintf(f, "Hash code (SHA1): "); s = (unsigned char *) &info.sha1; for (i = 0; i < 20; i++) fprintf(f, "%02x", *s++); fprintf(f, "\n"); } fprintf(f, "User ID: %d\n", info.user_id); fprintf(f, "User login: %s\n", teamdb_get_login(state->teamdb_state, info.user_id)); fprintf(f, "User name: %s\n", teamdb_get_name(state->teamdb_state, info.user_id)); fprintf(f, "Problem: %s\n", state->probs[info.prob_id]->short_name); if (state->probs[info.prob_id]->variant_num > 0) { variant = info.variant; if (!variant) { variant = find_variant(state, info.user_id, info.prob_id, &virt_variant); } if (is_privileged && virt_variant != variant) { fprintf(f, "Variant: %d (%d)\n", virt_variant, variant); } else { fprintf(f, "Variant: %d\n", virt_variant); } } fprintf(f, "Language: %s\n", (state->langs[info.lang_id])?((char*)state->langs[info.lang_id]->short_name):""); if (teaminfo.user && teaminfo.user->cnts0 && teaminfo.user->cnts0->location) { fprintf(f, "Location: %s\n", teaminfo.user->cnts0->location); } fprintf(f, "Status: %s\n", run_status_str(info.status, 0, 0, 0, 0)); fclose(f); return 0; cleanup: if (f) fclose(f); return -1; }