19#include <qbytearray.h>
20#include <qdatastream.h>
23#include <qwaitcondition.h>
24#include <qeventloop.h>
25#include <QtNetwork/qtcpserver.h>
26#include <QtNetwork/qtcpsocket.h>
27#include <qcborstreamreader.h>
28#include <qcborstreamwriter.h>
48 stream_name = t.stream_name;
49 stream_data = t.stream_data;
54 stream_name = t.stream_name;
55 stream_data = t.stream_data;
61 stream_name = std::move(t.stream_name);
62 stream_data = std::move(t.stream_data);
67 stream_name = std::move(t.stream_name);
68 stream_data = std::move(t.stream_data);
76 return s * 1024ul * 1024ul;
92 if (clientId != 0 && clientVersion != 0 && !sessionName.isEmpty()
93 && !sessionTracepoints.isEmpty() && bufferSize < MaxBufferSize)
142 void setHost(
const QString &address);
155 void bytesWritten(qint64 size);
157 void readCbor(QCborStreamReader &cbor);
158 void handleString(QCborStreamReader &cbor);
159 void handleFixedWidth(QCborStreamReader &cbor);
160 bool recognizedCompressionScheme()
const;
161 void setStatusAndNotify(ServerStatus status);
162 void writePacket(
TracePacket &packet, QCborStreamWriter &cbor);
165 QWaitCondition m_bufferHasData;
168 QTcpServer *m_server =
nullptr;
169 QTcpSocket *m_socket =
nullptr;
170 QEventLoop *m_eventLoop =
nullptr;
171 QList<QString> m_keySet;
175 qint64 m_waitWriteSize = 0;
176 qint64 m_writtenSize = 0;
178 int m_compression = 0;
179 int m_maxPackets = DefaultMaxPackets;
180 QAtomicInt m_stopping;
181 bool m_bufferOnIdle =
true;
182 QString m_currentKey;
183 QString m_requestedCompressionScheme;
188 static constexpr quint32 ServerId = 1;
189 static constexpr quint32 DefaultMaxPackets = 256;
void handleStatusChange(QCtfServer::ServerStatus status) override
static QCtfLib * instance()
bool sessionEnabled() override
void registerMetadata(const QCtfTraceMetadata &metadata)
bool tracepointEnabled(const QCtfTracePointEvent &point) override
QCtfTracePointPrivate * initializeTracepoint(const QCtfTracePointEvent &point) override
void handleSessionChange() override
void doTracepoint(const QCtfTracePointEvent &point, const QByteArray &arr) override
void shutdown(bool *) override
void setHost(const QString &address)
QString sessionTracepoints() const
QCtfServer(QObject *parent=nullptr)
@ RequestSessionTracepoints
@ RequestCompressionScheme
bool bufferOnIdle() const
void setCallback(ServerCallback *cb)
void bufferData(const QString &stream, const QByteArray &data, quint32 flags)
ServerStatus status() const
QString sessionName() const
\inmodule QtCore\reentrant
const QString & asString(const QString &s)
static const size_t traceMetadataSize
static QString toMetadata(const QString &provider, const QString &name, const QString &metadata, quint32 eventId)
static FILE * openFile(const QString &filename, const QString &mode)
static const size_t packetSize
static QString defaultLiteral()
static QString allLiteral()
static const char traceMetadataTemplate[]
static const size_t packetHeaderSize
auto constexpr operator""_MB(quint64 s) -> quint64
struct ZSTD_CCtx_s ZSTD_CCtx
#define Q_LOGGING_CATEGORY(name,...)
#define qCInfo(category,...)
#define qCWarning(category,...)
#define Q_DECLARE_LOGGING_CATEGORY(name)
#define qPrintable(string)
#define QStringLiteral(str)
virtual void handleSessionChange()=0
virtual void handleStatusChange(ServerStatus status)=0
TracePacket(TracePacket &&t)
TracePacket(const TracePacket &t)
static constexpr quint32 PacketSize
static constexpr quint32 PacketMagicNumber
TracePacket & operator=(TracePacket &&t)
TracePacket & operator=(const TracePacket &t)
static constexpr quint32 MaxBufferSize
QString sessionTracepoints