cutelyst 5.0.0
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
stats.cpp
1/*
2 * SPDX-FileCopyrightText: (C) 2015-2022 Daniel Nicoletti <dantti12@gmail.com>
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5#include "stats.h"
6
7#include "application.h"
8#include "common.h"
9#include "dispatchtype.h"
10#include "enginerequest.h"
11#include "stats_p.h"
12#include "utils.h"
13
14#include <QtCore/QStringList>
15
16using namespace Cutelyst;
17
19 : d_ptr(new StatsPrivate)
20{
21 Q_D(Stats);
22 d->engineRequest = request;
23}
24
25Stats::~Stats()
26{
27 delete d_ptr;
28}
29
30void Stats::profileStart(const QString &action)
31{
32 Q_D(Stats);
33 StatsAction stat;
34 stat.action = action;
35 stat.begin = std::chrono::steady_clock::now();
36 d->actions.push_back(stat);
37}
38
39void Stats::profileEnd(const QString &action)
40{
41 Q_D(Stats);
42 auto it = std::ranges::find_if(d->actions,
43 [action](const auto &stat) { return stat.action == action; });
44
45 if (it != d->actions.end()) {
46 it->end = std::chrono::steady_clock::now();
47 }
48}
49
51{
52 Q_D(const Stats);
53
54 QByteArray ret;
55 if (d->actions.empty()) {
56 return ret;
57 }
58
60 for (const auto &stat : d->actions) {
61 const std::chrono::duration<double> duration = stat.end - stat.begin;
62 table.append({stat.action, QString::number(duration.count(), 'f') + QLatin1Char('s')});
63 }
64
65 ret = Utils::buildTable(table, {QStringLiteral("Action"), QStringLiteral("Time")});
66 return ret;
67}
virtual void profileEnd(const QString &action)
Definition stats.cpp:39
virtual QByteArray report()
Definition stats.cpp:50
virtual void profileStart(const QString &action)
Definition stats.cpp:30
Stats(EngineRequest *request)
Definition stats.cpp:18
The Cutelyst namespace holds all public Cutelyst API.
void append(QList::parameter_type value)
QList::iterator end()
QString::iterator begin()
QString number(double n, char format, int precision)