Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qctflib_p.h
Go to the documentation of this file.
1
// Copyright (C) 2022 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#
ifndef
QT_CTFLIB_H
5
#
define
QT_CTFLIB_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
//
18
19
#
include
<
private
/
qctf_p
.
h
>
20
#
include
"qctfplugin_p.h"
21
#
include
<
qstring
.
h
>
22
#
include
<
qmutex
.
h
>
23
#
include
<
qelapsedtimer
.
h
>
24
#
include
<
qhash
.
h
>
25
#
include
<
qset
.
h
>
26
#
include
<
qthreadstorage
.
h
>
27
#
include
<
qthread
.
h
>
28
#
include
<
qloggingcategory
.
h
>
29
#
include
"qctfserver_p.h"
30
31
QT_BEGIN_NAMESPACE
32
33
Q_DECLARE_LOGGING_CATEGORY
(lcDebugTrace)
34
35
struct
QCtfTracePointPrivate
36
{
37
QString
metadata
;
38
quint32
id
= 0;
39
quint32
payloadSize
= 0;
40
bool
metadataWritten
=
false
;
41
};
42
43
class
QCtfLibImpl
:
public
QCtfLib
,
public
QCtfServer
::
ServerCallback
44
{
45
struct
Session
46
{
47
QString name;
48
QStringList tracepoints;
49
bool
all =
false
;
50
};
51
struct
Channel
52
{
53
char
channelName[512];
54
QByteArray
data;
55
quint64 minTimestamp = 0;
56
quint64 maxTimestamp = 0;
57
quint64 seqnumber = 0;
58
QThread *thread =
nullptr
;
59
quint32 threadIndex = 0;
60
QByteArray
threadName;
61
quint32 threadNameLength = 0;
62
bool
locked =
false
;
63
QCtfLibImpl
*impl =
nullptr
;
64
Channel()
65
{
66
memset(channelName, 0,
sizeof
(channelName));
67
}
68
69
~Channel();
70
};
71
72
public
:
73
QCtfLibImpl
();
74
~
QCtfLibImpl
();
75
76
bool
tracepointEnabled
(
const
QCtfTracePointEvent &point)
override
;
77
void
doTracepoint
(
const
QCtfTracePointEvent &point,
const
QByteArray
&arr)
override
;
78
bool
sessionEnabled
()
override
;
79
QCtfTracePointPrivate
*
initializeTracepoint
(
const
QCtfTracePointEvent &point)
override
;
80
void
registerMetadata
(
const
QCtfTraceMetadata &metadata);
81
int
eventId
();
82
void
shutdown
(
bool
*)
override
83
{
84
85
}
86
87
static
QCtfLib
*
instance
();
88
static
void
cleanup
();
89
private
:
90
static
QCtfLibImpl
*s_instance;
91
QHash
<QString,
QCtfTracePointPrivate
*> m_eventPrivs;
92
void
removeChannel(Channel *ch);
93
void
updateMetadata(
const
QCtfTracePointEvent &point);
94
void
writeMetadata(
const
QString &metadata,
bool
overwrite =
false
);
95
void
clearLocation();
96
void
handleSessionChange
()
override
;
97
void
handleStatusChange
(QCtfServer::ServerStatus status)
override
;
98
void
writeCtfPacket(Channel &ch);
99
void
buildMetadata();
100
101
static
constexpr
QUuid s_TraceUuid = QUuid(0x3e589c95, 0xed11, 0xc159, 0x42, 0x02, 0x6a, 0x9b, 0x02, 0x00, 0x12, 0xac);
102
static
constexpr
quint32 s_CtfHeaderMagic = 0xC1FC1FC1;
103
104
QMutex m_mutex;
105
QElapsedTimer m_timer;
106
QString m_metadata;
107
QString m_location;
108
Session m_session;
109
QHash<QThread*, quint32> m_threadIndices;
110
QThreadStorage
<Channel> m_threadData;
111
QList
<Channel *> m_channels;
112
QHash<QString,
const
QCtfTraceMetadata *> m_additionalMetadata;
113
QSet<
QString
>
m_newAdditionalMetadata
;
114
QDateTime m_datetime;
115
int
m_eventId = 0;
116
bool
m_streaming =
false
;
117
std
::atomic_bool m_sessionChanged =
false
;
118
std
::atomic_bool m_serverClosed =
false
;
119
QScopedPointer<QCtfServer> m_server;
120
friend
struct
Channel
;
121
};
122
123
QT_END_NAMESPACE
124
125
#
endif
QByteArray::FromBase64Result
\inmodule QtCore
Definition
qbytearray.h:824
QCtfLibImpl
Definition
qctflib_p.h:44
QCtfLibImpl::handleStatusChange
void handleStatusChange(QCtfServer::ServerStatus status) override
Definition
qctflib.cpp:77
QCtfLibImpl::eventId
int eventId()
Definition
qctflib.cpp:433
QCtfLibImpl::instance
static QCtfLib * instance()
Definition
qctflib.cpp:59
QCtfLibImpl::cleanup
static void cleanup()
Definition
qctflib.cpp:66
QCtfLibImpl::sessionEnabled
bool sessionEnabled() override
Definition
qctflib.cpp:428
QCtfLibImpl::registerMetadata
void registerMetadata(const QCtfTraceMetadata &metadata)
Definition
qctflib.cpp:438
QCtfLibImpl::tracepointEnabled
bool tracepointEnabled(const QCtfTracePointEvent &point) override
Definition
qctflib.cpp:291
QCtfLibImpl::initializeTracepoint
QCtfTracePointPrivate * initializeTracepoint(const QCtfTracePointEvent &point) override
Definition
qctflib.cpp:336
QCtfLibImpl::handleSessionChange
void handleSessionChange() override
Definition
qctflib.cpp:72
QCtfLibImpl::doTracepoint
void doTracepoint(const QCtfTracePointEvent &point, const QByteArray &arr) override
Definition
qctflib.cpp:353
QCtfLibImpl::~QCtfLibImpl
~QCtfLibImpl()
Definition
qctflib.cpp:278
QCtfLibImpl::QCtfLibImpl
QCtfLibImpl()
Definition
qctflib.cpp:105
QCtfLibImpl::shutdown
void shutdown(bool *) override
Definition
qctflib_p.h:82
QCtfServer
Definition
qctfserver_p.h:107
QHash
\inmodule QtCore
Definition
qhash.h:844
QJsonDocument
\inmodule QtCore\reentrant
Definition
qjsondocument.h:29
QList
Definition
qlist.h:82
QMutexLocker
\inmodule QtCore
Definition
qmutex.h:347
QThreadStorage
\inmodule QtCore
Definition
qthreadstorage.h:159
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QtPrivate::asString
const QString & asString(const QString &s)
Definition
qstring.h:1713
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
traceMetadataSize
static const size_t traceMetadataSize
Definition
qctflib.cpp:34
toMetadata
static QString toMetadata(const QString &provider, const QString &name, const QString &metadata, quint32 eventId)
Definition
qctflib.cpp:316
openFile
static FILE * openFile(const QString &filename, const QString &mode)
Definition
qctflib.cpp:48
packetSize
static const size_t packetSize
Definition
qctflib.cpp:29
defaultLiteral
static QString defaultLiteral()
Definition
qctflib.cpp:37
allLiteral
static QString allLiteral()
Definition
qctflib.cpp:36
traceMetadataTemplate
static const char traceMetadataTemplate[]
Definition
qctflib.cpp:31
packetHeaderSize
static const size_t packetHeaderSize
Definition
qctflib.cpp:28
Q_LOGGING_CATEGORY
#define Q_LOGGING_CATEGORY(name,...)
Definition
qloggingcategory.h:147
qCInfo
#define qCInfo(category,...)
Definition
qloggingcategory.h:163
qCWarning
#define qCWarning(category,...)
Definition
qloggingcategory.h:164
Q_DECLARE_LOGGING_CATEGORY
#define Q_DECLARE_LOGGING_CATEGORY(name)
Definition
qloggingcategory.h:141
qPrintable
#define qPrintable(string)
Definition
qstring.h:1718
QStringLiteral
#define QStringLiteral(str)
Definition
qstring.h:1865
QCtfServer::ServerCallback
Definition
qctfserver_p.h:135
QCtfTracePointPrivate
Definition
qctflib_p.h:36
QCtfTracePointPrivate::metadata
QString metadata
Definition
qctflib_p.h:37
QCtfTracePointPrivate::id
quint32 id
Definition
qctflib_p.h:38
QCtfTracePointPrivate::metadataWritten
bool metadataWritten
Definition
qctflib_p.h:40
QCtfTracePointPrivate::payloadSize
quint32 payloadSize
Definition
qctflib_p.h:39
qtbase
src
plugins
tracing
qctflib_p.h
Generated on
for Qt by
1.18.0