aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmltooling/qmldbg_local
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@theqtcompany.com>2015-06-16 13:40:08 +0200
committerUlf Hermann <ulf.hermann@theqtcompany.com>2015-08-04 13:34:48 +0000
commita010f3a8f92a9a364e9d17d12b06074fde6f8a17 (patch)
tree33a3a91f63d8daa4a5a939a4af4e29812c803bc0 /src/plugins/qmltooling/qmldbg_local
parent31291359a327c5ffa6aa3aff76b62491782408d7 (diff)
Deduplicate debug server connection code.
The packet protocol can be part of the server, now that the server is not part of QtQml anymore. This enables us to remove some duplicated code from the connections. As an added benefit, with more control over the sending process, QQmlDebugServer can now efficiently send single packets, without creating a QList<QByteArray> first. Change-Id: I13cc831e254c02b737e64816d6d3ab051d760995 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/plugins/qmltooling/qmldbg_local')
-rw-r--r--src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.cpp54
-rw-r--r--src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.h8
-rw-r--r--src/plugins/qmltooling/qmldbg_local/qmldbg_local.pro8
3 files changed, 12 insertions, 58 deletions
diff --git a/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.cpp b/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.cpp
index 266f450720..cf4512cc6e 100644
--- a/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.cpp
+++ b/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.cpp
@@ -47,14 +47,12 @@ public:
bool block;
QString filename;
QLocalSocket *socket;
- QPacketProtocol *protocol;
QQmlDebugServer *debugServer;
};
QLocalClientConnectionPrivate::QLocalClientConnectionPrivate() :
block(false),
socket(0),
- protocol(0),
debugServer(0)
{
}
@@ -83,21 +81,6 @@ bool QLocalClientConnection::isConnected() const
return d->socket && d->socket->state() == QLocalSocket::ConnectedState;
}
-void QLocalClientConnection::send(const QList<QByteArray> &messages)
-{
- Q_D(QLocalClientConnection);
-
- if (!isConnected() || !d->protocol || !d->socket)
- return;
-
- foreach (const QByteArray &message, messages) {
- QPacket pack;
- pack.writeRawData(message.data(), message.length());
- d->protocol->send(pack);
- }
- d->socket->flush();
-}
-
void QLocalClientConnection::disconnect()
{
Q_D(QLocalClientConnection);
@@ -105,19 +88,10 @@ void QLocalClientConnection::disconnect()
while (d->socket && d->socket->bytesToWrite() > 0)
d->socket->waitForBytesWritten();
- // protocol might still be processing packages at this point
- d->protocol->deleteLater();
- d->protocol = 0;
d->socket->deleteLater();
d->socket = 0;
}
-bool QLocalClientConnection::waitForMessage()
-{
- Q_D(QLocalClientConnection);
- return d->protocol->waitForReadyRead(-1);
-}
-
bool QLocalClientConnection::setPortRange(int portFrom, int portTo, bool block,
const QString &hostaddress)
{
@@ -133,7 +107,7 @@ bool QLocalClientConnection::setFileName(const QString &filename, bool block)
Q_D(QLocalClientConnection);
d->filename = filename;
d->block = block;
- return connect();
+ return connectToServer();
}
void QLocalClientConnection::waitForConnection()
@@ -142,7 +116,7 @@ void QLocalClientConnection::waitForConnection()
d->socket->waitForConnected(-1);
}
-bool QLocalClientConnection::connect()
+bool QLocalClientConnection::connectToServer()
{
Q_D(QLocalClientConnection);
@@ -155,33 +129,17 @@ bool QLocalClientConnection::connect()
return true;
}
-void QLocalClientConnection::readyRead()
+void QLocalClientConnection::flush()
{
Q_D(QLocalClientConnection);
- if (!d->protocol)
- return;
-
- QPacket packet = d->protocol->read();
-
- QByteArray content = packet.data();
- d->debugServer->receiveMessage(content);
+ if (d->socket)
+ d->socket->flush();
}
void QLocalClientConnection::connectionEstablished()
{
Q_D(QLocalClientConnection);
-
- d->protocol = new QPacketProtocol(d->socket, this);
- QObject::connect(d->protocol, SIGNAL(readyRead()), this, SLOT(readyRead()));
- QObject::connect(d->protocol, SIGNAL(invalidPacket()), this, SLOT(invalidPacket()));
-
- if (d->block)
- d->protocol->waitForReadyRead(-1);
-}
-
-void QLocalClientConnection::invalidPacket()
-{
- qWarning("QML Debugger: Received a corrupted packet! Giving up ...");
+ d->debugServer->setDevice(d->socket);
}
QT_END_NAMESPACE
diff --git a/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.h b/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.h
index afc86a22ef..4d20b8db2f 100644
--- a/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.h
+++ b/src/plugins/qmltooling/qmldbg_local/qlocalclientconnection.h
@@ -56,19 +56,17 @@ public:
bool setFileName(const QString &filename, bool block);
bool isConnected() const;
- void send(const QList<QByteArray> &messages);
void disconnect();
- bool waitForMessage();
void waitForConnection();
- bool connect();
+ void flush();
private Q_SLOTS:
- void readyRead();
void connectionEstablished();
- void invalidPacket();
private:
+ bool connectToServer();
+
QLocalClientConnectionPrivate *d_ptr;
};
diff --git a/src/plugins/qmltooling/qmldbg_local/qmldbg_local.pro b/src/plugins/qmltooling/qmldbg_local/qmldbg_local.pro
index d8eb5ed5b6..4fa05234e6 100644
--- a/src/plugins/qmltooling/qmldbg_local/qmldbg_local.pro
+++ b/src/plugins/qmltooling/qmldbg_local/qmldbg_local.pro
@@ -1,19 +1,17 @@
TARGET = qmldbg_local
-QT = qml-private core-private
+QT = qml-private
PLUGIN_TYPE = qmltooling
PLUGIN_CLASS_NAME = QLocalClientConnection
load(qt_plugin)
SOURCES += \
- $$PWD/qlocalclientconnection.cpp \
- $$PWD/../shared/qpacketprotocol.cpp
+ $$PWD/qlocalclientconnection.cpp
HEADERS += \
$$PWD/qlocalclientconnection.h \
$$PWD/../shared/qqmldebugserver.h \
- $$PWD/../shared/qqmldebugserverconnection.h \
- $$PWD/../shared/qpacketprotocol.h
+ $$PWD/../shared/qqmldebugserverconnection.h
INCLUDEPATH += $$PWD \
$$PWD/../shared