cutelyst  3.7.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_p.h"
6 
7 #include "dispatchtype.h"
8 #include "application.h"
9 #include "enginerequest.h"
10 #include "utils.h"
11 
12 #include "common.h"
13 
14 #include <QtCore/QStringList>
15 
16 using namespace Cutelyst;
17 
18 Stats::Stats(EngineRequest *request) : d_ptr(new StatsPrivate)
19 {
20  Q_D(Stats);
21  d->engineRequest = request;
22 }
23 
24 Stats::~Stats()
25 {
26  delete d_ptr;
27 }
28 
29 void Stats::profileStart(const QString &action)
30 {
31  Q_D(Stats);
32  StatsAction stat;
33  stat.action = action;
34  stat.begin = d->engineRequest->elapsed.nsecsElapsed();
35  d->actions.push_back(stat);
36 }
37 
38 void Stats::profileEnd(const QString &action)
39 {
40  Q_D(Stats);
41  for (auto &stat : d->actions) {
42  if (stat.action == action) {
43  stat.end = d->engineRequest->elapsed.nsecsElapsed();
44  break;
45  }
46  }
47 }
48 
49 QByteArray Stats::report()
50 {
51  Q_D(const Stats);
52 
53  QByteArray ret;
54  if (d->actions.size() == 0) {
55  return ret;
56  }
57 
58  QVector<QStringList> table;
59  for (const auto &stat : d->actions) {
60  table.append({ stat.action,
61  QString::number((stat.end - stat.begin)/1000000000.0, 'f') + QLatin1Char('s') });
62  }
63 
64  ret = Utils::buildTable(table, {
65  QStringLiteral("Action"), QStringLiteral("Time")
66  });
67  return ret;
68 }
virtual void profileEnd(const QString &action)
Definition: stats.cpp:38
virtual QByteArray report()
Definition: stats.cpp:49
virtual void profileStart(const QString &action)
Definition: stats.cpp:29
Stats(EngineRequest *request)
Definition: stats.cpp:18
The Cutelyst namespace holds all public Cutelyst API.
Definition: Mainpage.dox:8