Simply record the time from entering `main` to start listening sockets.
if (counters)
    {
        for (Event i = 0; i < num_counters; ++i)
            counters[i].store(0, std::memory_order_relaxed);
    }
}
void Counters::reset()
{
    parent = nullptr;
    resetCounters();
}
Counters::Snapshot::Snapshot()
    : counters_holder(new Count[num_counters] {})
{}
Counters::Snapshot Counters::getPartiallyAtomicSnapshot() const
{
    Snapshot res;
    for (Event i = 0; i < num_counters; ++i)
        res.counters_holder[i] = counters[i].load(std::memory_order_relaxed);
    return res;
}
const char * getName(Event event)
{
    static const char * strings[] =
    {
    #define M(NAME, DOCUMENTATION) #NAME,
        APPLY_FOR_EVENTS(M)
    #undef M
    };
    return strings[event];