From ba5c136a6da15f81d35df73557ffd6ad5ef3eed0 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 5 May 2014 18:01:02 +0200 Subject: [PATCH] QmlDebugClient: Check for gotHello to determine if connection is open The isConnected() method was misleading as it only checked for the network socket to be connected. Sending data before the hello message arrives is a pretty stupid idea and the debug clients need a way to detect that. The new isOpen method stresses that it's about the logical protocol, not the network socket. Change-Id: I84f093d91d7a21d20a8f3d14730c9f189ec35bde Reviewed-by: Kai Koehne --- src/libs/qmldebug/declarativetoolsclient.cpp | 30 +++++++++---------- src/libs/qmldebug/qmldebugclient.cpp | 10 +++---- src/libs/qmldebug/qmldebugclient.h | 2 +- src/libs/qmldebug/qmltoolsclient.cpp | 22 +++++++------- .../qmlprofiler/qmlprofilerclientmanager.cpp | 4 +-- 5 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/libs/qmldebug/declarativetoolsclient.cpp b/src/libs/qmldebug/declarativetoolsclient.cpp index 98304b85dda..a08a672f749 100644 --- a/src/libs/qmldebug/declarativetoolsclient.cpp +++ b/src/libs/qmldebug/declarativetoolsclient.cpp @@ -235,7 +235,7 @@ QList DeclarativeToolsClient::currentObjects() const void DeclarativeToolsClient::setCurrentObjects(const QList &debugIds) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; if (debugIds == m_currentDebugIds) @@ -289,7 +289,7 @@ void DeclarativeToolsClient::setObjectIdList( void DeclarativeToolsClient::clearComponentCache() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -308,7 +308,7 @@ void DeclarativeToolsClient::reload(const QHashisConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -324,7 +324,7 @@ void DeclarativeToolsClient::reload(const QHashisConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -341,7 +341,7 @@ void DeclarativeToolsClient::setDesignModeBehavior(bool inDesignMode) void DeclarativeToolsClient::setAnimationSpeed(qreal slowDownFactor) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -359,7 +359,7 @@ void DeclarativeToolsClient::setAnimationSpeed(qreal slowDownFactor) void DeclarativeToolsClient::setAnimationPaused(bool paused) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -376,7 +376,7 @@ void DeclarativeToolsClient::setAnimationPaused(bool paused) void DeclarativeToolsClient::changeToSelectTool() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -394,7 +394,7 @@ void DeclarativeToolsClient::changeToSelectTool() void DeclarativeToolsClient::changeToSelectMarqueeTool() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -412,7 +412,7 @@ void DeclarativeToolsClient::changeToSelectMarqueeTool() void DeclarativeToolsClient::changeToZoomTool() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -430,7 +430,7 @@ void DeclarativeToolsClient::changeToZoomTool() void DeclarativeToolsClient::showAppOnTop(bool showOnTop) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -449,7 +449,7 @@ void DeclarativeToolsClient::createQmlObject(const QString &qmlText, const QStringList &imports, const QString &filename, int order) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -472,7 +472,7 @@ void DeclarativeToolsClient::createQmlObject(const QString &qmlText, void DeclarativeToolsClient::destroyQmlObject(int debugId) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); @@ -487,7 +487,7 @@ void DeclarativeToolsClient::destroyQmlObject(int debugId) void DeclarativeToolsClient::reparentQmlObject(int debugId, int newParent) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); @@ -506,7 +506,7 @@ void DeclarativeToolsClient::reparentQmlObject(int debugId, int newParent) void DeclarativeToolsClient::applyChangesToQmlFile() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; // TODO @@ -514,7 +514,7 @@ void DeclarativeToolsClient::applyChangesToQmlFile() void DeclarativeToolsClient::applyChangesFromQmlFile() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; // TODO diff --git a/src/libs/qmldebug/qmldebugclient.cpp b/src/libs/qmldebug/qmldebugclient.cpp index d9cf8fa932c..1a7f8656f83 100644 --- a/src/libs/qmldebug/qmldebugclient.cpp +++ b/src/libs/qmldebug/qmldebugclient.cpp @@ -82,7 +82,7 @@ QmlDebugConnectionPrivate::QmlDebugConnectionPrivate(QmlDebugConnection *c) void QmlDebugConnectionPrivate::advertisePlugins() { - if (!q->isConnected() || !gotHello) + if (!q->isOpen()) return; QPacket pack; @@ -230,9 +230,9 @@ QmlDebugConnection::~QmlDebugConnection() } } -bool QmlDebugConnection::isConnected() const +bool QmlDebugConnection::isOpen() const { - return socketState() == QAbstractSocket::ConnectedState; + return socketState() == QAbstractSocket::ConnectedState && d->gotHello; } void QmlDebugConnection::close() @@ -340,9 +340,7 @@ float QmlDebugClient::serviceVersion() const QmlDebugClient::State QmlDebugClient::state() const { Q_D(const QmlDebugClient); - if (!d->connection - || !d->connection->isConnected() - || !d->connection->d->gotHello) + if (!d->connection || !d->connection->isOpen()) return NotConnected; if (d->connection->d->serverPlugins.contains(d->name)) diff --git a/src/libs/qmldebug/qmldebugclient.h b/src/libs/qmldebug/qmldebugclient.h index e4109f97d73..c865f410a54 100644 --- a/src/libs/qmldebug/qmldebugclient.h +++ b/src/libs/qmldebug/qmldebugclient.h @@ -48,7 +48,7 @@ public: void connectToHost(const QString &hostName, quint16 port); - bool isConnected() const; + bool isOpen() const; QAbstractSocket::SocketState socketState() const; void close(); QString errorString() const; diff --git a/src/libs/qmldebug/qmltoolsclient.cpp b/src/libs/qmldebug/qmltoolsclient.cpp index d6d857e9ea6..3607c51779b 100644 --- a/src/libs/qmldebug/qmltoolsclient.cpp +++ b/src/libs/qmldebug/qmltoolsclient.cpp @@ -127,7 +127,7 @@ QList QmlToolsClient::currentObjects() const void QmlToolsClient::setCurrentObjects(const QList &debugIds) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; if (debugIds == m_currentDebugIds) @@ -153,7 +153,7 @@ void QmlToolsClient::setObjectIdList( void QmlToolsClient::clearComponentCache() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -168,7 +168,7 @@ void QmlToolsClient::clearComponentCache() void QmlToolsClient::reload(const QHash &changesHash) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; m_reloadQueryId = m_requestId; @@ -185,7 +185,7 @@ void QmlToolsClient::reload(const QHash &changesHash) void QmlToolsClient::setDesignModeBehavior(bool inDesignMode) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -203,7 +203,7 @@ void QmlToolsClient::setDesignModeBehavior(bool inDesignMode) void QmlToolsClient::setAnimationSpeed(qreal slowDownFactor) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -244,7 +244,7 @@ void QmlToolsClient::changeToZoomTool() void QmlToolsClient::showAppOnTop(bool showOnTop) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -262,7 +262,7 @@ void QmlToolsClient::createQmlObject(const QString &qmlText, const QStringList &imports, const QString &filename, int order) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; @@ -284,7 +284,7 @@ void QmlToolsClient::createQmlObject(const QString &qmlText, void QmlToolsClient::destroyQmlObject(int debugId) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); @@ -299,7 +299,7 @@ void QmlToolsClient::destroyQmlObject(int debugId) void QmlToolsClient::reparentQmlObject(int debugId, int newParent) { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); @@ -315,7 +315,7 @@ void QmlToolsClient::reparentQmlObject(int debugId, int newParent) void QmlToolsClient::applyChangesToQmlFile() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; // TODO @@ -323,7 +323,7 @@ void QmlToolsClient::applyChangesToQmlFile() void QmlToolsClient::applyChangesFromQmlFile() { - if (!m_connection || !m_connection->isConnected()) + if (!m_connection || !m_connection->isOpen()) return; // TODO diff --git a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp index 5501d505156..906573dde1a 100644 --- a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp @@ -243,7 +243,7 @@ void QmlProfilerClientManager::connectToClient() bool QmlProfilerClientManager::isConnected() const { - return d->connection && d->connection->isConnected(); + return d->connection && d->connection->isOpen(); } void QmlProfilerClientManager::disconnectClient() @@ -260,7 +260,7 @@ void QmlProfilerClientManager::tryToConnect() { ++d->connectionAttempts; - if (d->connection && d->connection->isConnected()) { + if (d->connection && d->connection->isOpen()) { d->connectionTimer.stop(); d->connectionAttempts = 0; } else if (d->connectionAttempts == 50) {