aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore/tracing/qmldesignertracing.cpp
blob: b5798b713d2929436d9e90d07c9f6403e5b512c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

#include "qmldesignertracing.h"

#include <sqlitebasestatement.h>

namespace QmlDesigner {

using namespace NanotraceHR::Literals;

namespace Tracing {

namespace {

using TraceFile = NanotraceHR::TraceFile<tracingStatus()>;

auto &traceFile()
{
    if constexpr (std::is_same_v<Sqlite::TraceFile, TraceFile>) {
        return Sqlite::traceFile();
    } else {
        static TraceFile traceFile{"tracing.json"};
        return traceFile;
    }
}
} // namespace

EventQueue &eventQueue()
{
    thread_local NanotraceHR::EventQueue<NanotraceHR::StringViewTraceEvent, tracingStatus()>
        stringViewEventQueue(traceFile());

    return stringViewEventQueue;
}

EventQueueWithStringArguments &eventQueueWithStringArguments()
{
    thread_local NanotraceHR::EventQueue<NanotraceHR::StringViewWithStringArgumentsTraceEvent, tracingStatus()>
        stringViewWithStringArgumentsEventQueue(traceFile());

    return stringViewWithStringArgumentsEventQueue;
}

StringEventQueue &stringEventQueue()
{
    thread_local NanotraceHR::EventQueue<NanotraceHR::StringTraceEvent, tracingStatus()> eventQueue(
        traceFile());

    return eventQueue;
}

} // namespace Tracing

namespace ModelTracing {
namespace {

thread_local Category category_{"model"_t, Tracing::stringEventQueue(), category};

} // namespace

Category &category()
{
    return category_;
}

} // namespace ModelTracing

namespace ProjectStorageTracing {

Category &projectStorageCategory()
{
    thread_local Category category{"project storage"_t,
                                   Tracing::eventQueueWithStringArguments(),
                                   projectStorageCategory};

    return category;
}

Category &projectStorageUpdaterCategory()
{
    thread_local Category category{"project storage updater"_t,
                                   Tracing::eventQueueWithStringArguments(),
                                   projectStorageCategory};

    return category;
}

} // namespace ProjectStorageTracing

} // namespace QmlDesigner