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 <kai.koehne@digia.com>
This commit is contained in:
Ulf Hermann
2014-05-05 18:01:02 +02:00
parent 10252364bb
commit ba5c136a6d
5 changed files with 33 additions and 35 deletions

View File

@@ -235,7 +235,7 @@ QList<int> DeclarativeToolsClient::currentObjects() const
void DeclarativeToolsClient::setCurrentObjects(const QList<int> &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 QHash<QString,
{
Q_UNUSED(changesHash);
if (!m_connection || !m_connection->isConnected())
if (!m_connection || !m_connection->isOpen())
return;
QByteArray message;
@@ -324,7 +324,7 @@ void DeclarativeToolsClient::reload(const QHash<QString,
void DeclarativeToolsClient::setDesignModeBehavior(bool inDesignMode)
{
if (!m_connection || !m_connection->isConnected())
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

View File

@@ -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))

View File

@@ -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;

View File

@@ -127,7 +127,7 @@ QList<int> QmlToolsClient::currentObjects() const
void QmlToolsClient::setCurrentObjects(const QList<int> &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<QString, QByteArray> &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<QString, QByteArray> &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

View File

@@ -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) {