QmlDebug: Extract a general QML debug connection manager from QmlProfiler

We can use it for other QmlDebug run controls, too.

Change-Id: Iee1cd592848ef4c48954a2674b6fa509223fcda4
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Ulf Hermann
2017-09-27 18:23:53 +02:00
parent a54685aa59
commit d386b4ed6d
7 changed files with 401 additions and 289 deletions

View File

@@ -28,6 +28,7 @@
#include "qmlprofilertraceclient.h"
#include <qmldebug/qmldebugclient.h>
#include <qmldebug/qmldebugconnectionmanager.h>
#include <QPointer>
#include <QTimer>
@@ -39,63 +40,27 @@ class QmlProfilerStateManager;
namespace Internal {
class QmlProfilerClientManager : public QObject
class QmlProfilerClientManager : public QmlDebug::QmlDebugConnectionManager
{
Q_OBJECT
public:
explicit QmlProfilerClientManager(QObject *parent = 0);
~QmlProfilerClientManager();
void setProfilerStateManager(QmlProfilerStateManager *profilerState);
void connectToServer(const QUrl &server);
void clearConnection();
void clearBufferedData();
bool isConnected() const;
void setModelManager(QmlProfilerModelManager *m);
void setModelManager(QmlProfilerModelManager *modelManager);
void setFlushInterval(quint32 flushInterval);
void setRetryParams(int interval, int maxAttempts);
void retryConnect();
void clearBufferedData();
void stopRecording();
signals:
void connectionOpened();
void connectionFailed();
void connectionClosed();
protected:
void createClients() override;
void destroyClients() override;
void logState(const QString &message) override;
private:
void connectToTcpServer();
void startLocalServer();
QPointer<QmlProfilerTraceClient> m_clientPlugin;
QPointer<QmlProfilerStateManager> m_profilerState;
QPointer<QmlProfilerModelManager> m_modelManager;
QScopedPointer<QmlDebug::QmlDebugConnection> m_connection;
QScopedPointer<QmlProfilerTraceClient> m_qmlclientplugin;
QTimer m_connectionTimer;
QUrl m_server;
quint32 m_flushInterval = 0;
int m_retryInterval = 200;
int m_maximumRetries = 50;
int m_numRetries = 0;
void disconnectClient();
void stopConnectionTimer();
void qmlDebugConnectionOpened();
void qmlDebugConnectionClosed();
void qmlDebugConnectionFailed();
void logState(const QString &);
void createConnection();
void connectClientSignals();
void disconnectClientSignals();
};
} // namespace Internal