QQmlAbstractProfilerAdapter Class

Header: #include <QQmlAbstractProfilerAdapter>
qmake: QT += qml
Inherits: QObject.
Inherited By:

Public Functions

QQmlAbstractProfilerAdapter(QQmlProfilerService * service)
virtual ~QQmlAbstractProfilerAdapter()
quint64 features() const
bool isRunning() const
void reportData()
virtual qint64 sendMessages(qint64 until, QList<QByteArray> & messages) = 0
void startProfiling(quint64 features)
void startWaiting()
void stopProfiling()
void stopWaiting()
void synchronize(const QElapsedTimer & timer)
  • 31 public functions inherited from QObject

Signals

void dataRequested()
void profilingDisabled()
void profilingDisabledWhileWaiting()
void profilingEnabled(quint64 features)
void profilingEnabledWhileWaiting(quint64 features)
void referenceTimeKnown(const QElapsedTimer & timer)

Additional Inherited Members

  • 1 property inherited from QObject
  • 1 public slot inherited from QObject
  • 11 static public members inherited from QObject
  • 9 protected functions inherited from QObject

Detailed Description

Abstract base class for all adapters between profilers and the QQmlProfilerService. Adapters have to retrieve profiler-specific data and convert it to the format sent over the wire. Adapters must live in the QDebugServer thread but the actual profilers can live in different threads. The recommended way to deal with this is passing the profiling data through a signal/slot connection.

Member Function Documentation

QQmlAbstractProfilerAdapter::​QQmlAbstractProfilerAdapter(QQmlProfilerService * service)

[virtual] QQmlAbstractProfilerAdapter::​~QQmlAbstractProfilerAdapter()

[signal] void QQmlAbstractProfilerAdapter::​dataRequested()

Signals that data has been requested by the QQmlProfilerService. This signal should be connected to a slot in the profiler and the profiler should then transfer its currently available profiling data to the adapter as soon as possible.

quint64 QQmlAbstractProfilerAdapter::​features() const

bool QQmlAbstractProfilerAdapter::​isRunning() const

Returns if the profiler is currently running. The profiler is considered to be running after startProfiling() has been called until stopProfiling() is called. That is independent of waiting. The profiler may be running and waiting at the same time.

[signal] void QQmlAbstractProfilerAdapter::​profilingDisabled()

This signal is emitted if stopProfiling() is called while the profiler is not considered to be waiting. The profiler is expected to handle the signal asynchronously.

[signal] void QQmlAbstractProfilerAdapter::​profilingDisabledWhileWaiting()

This signal is emitted if stopProfiling() is called while the profiler is considered to be waiting. In many cases this signal can be connected with a Qt::DirectConnection.

[signal] void QQmlAbstractProfilerAdapter::​profilingEnabled(quint64 features)

[signal] void QQmlAbstractProfilerAdapter::​profilingEnabledWhileWaiting(quint64 features)

[signal] void QQmlAbstractProfilerAdapter::​referenceTimeKnown(const QElapsedTimer & timer)

This signal is used to synchronize the profiler's timer to the QQmlProfilerservice's. The profiler is expected to save timer and use it for timestamps on its data.

void QQmlAbstractProfilerAdapter::​reportData()

Make the profiler report its current data without stopping the collection. The same (and additional) data can later be requested again with stopProfiling() or reportData().

[pure virtual] qint64 QQmlAbstractProfilerAdapter::​sendMessages(qint64 until, QList<QByteArray> & messages)

Append the messages up to the timestamp until, chronologically sorted, to messages. Keep track of the messages already sent and with each subsequent call to this method start with the first one not yet sent. Messages that have been sent can be deleted. When new data from the profiler arrives the information about the last sent message must be reset. Return the timestamp of the next message after until or -1 if there is no such message. The profiler service keeps a list of adapters, sorted by time of next message and keeps querying the first one to send messages up to the time of the second one. Like that we get chronologically sorted messages and can occasionally post the messages to exploit parallelism and save memory.

void QQmlAbstractProfilerAdapter::​startProfiling(quint64 features)

void QQmlAbstractProfilerAdapter::​startWaiting()

Consider the profiler to be waiting from now on. While the profiler is waiting it can be directly accessed even if it is in a different thread. This method should only be called if it is actually safe to do so.

void QQmlAbstractProfilerAdapter::​stopProfiling()

Emits either profilingDisabled() or profilingDisabledWhileWaiting(), depending on waiting. If the profiler's thread is waiting for an initial start signal we can emit the signal over a Qt::DirectConnection to avoid the delay of the event loop. This should trigger the profiler to report its collected data and subsequently delete it.

void QQmlAbstractProfilerAdapter::​stopWaiting()

Consider the profiler not to be waiting anymore. If it lives in a different threads any requests for it have to be done via a queued connection then.

void QQmlAbstractProfilerAdapter::​synchronize(const QElapsedTimer & timer)

Synchronize the profiler to timer. This emits referenceTimeKnown().

© 2015 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.