From f15595901b645fc3c168ef18f81ae4617b439e92 Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Mon, 18 Mar 2013 17:17:52 +0100 Subject: Debugger: Accepts port range as arguments Allow a port range to pass on command line, and try to listen on any of the ports in the range. (Re)using the ',' separator allows for backwards compatibility, that is, also Qt 4 will accept a -qmljsdebugger=port:1000,1010 argument, but will only try to listen on port 1000. Change-Id: Ic03fe20e4aee9ecdea86651f46f1df5cb19bd75c Reviewed-by: Kai Koehne --- .../qmltooling/qmldbg_tcp/qtcpserverconnection.cpp | 30 ++++++++++++++++------ .../qmltooling/qmldbg_tcp/qtcpserverconnection.h | 2 +- 2 files changed, 23 insertions(+), 9 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.cpp b/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.cpp index fbdb201b04..86e1a70841 100644 --- a/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.cpp +++ b/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.cpp @@ -54,7 +54,8 @@ class QTcpServerConnectionPrivate { public: QTcpServerConnectionPrivate(); - int port; + int portFrom; + int portTo; bool block; QString hostaddress; QTcpSocket *socket; @@ -65,7 +66,8 @@ public: }; QTcpServerConnectionPrivate::QTcpServerConnectionPrivate() : - port(0), + portFrom(0), + portTo(0), block(false), socket(0), protocol(0), @@ -135,10 +137,12 @@ bool QTcpServerConnection::waitForMessage() return d->protocol->waitForReadyRead(-1); } -void QTcpServerConnection::setPort(int port, bool block, const QString &hostaddress) +void QTcpServerConnection::setPortRange(int portFrom, int portTo, bool block, + const QString &hostaddress) { Q_D(QTcpServerConnection); - d->port = port; + d->portFrom = portFrom; + d->portTo = portTo; d->block = block; d->hostaddress = hostaddress; @@ -163,10 +167,20 @@ void QTcpServerConnection::listen() } else { hostaddress = QHostAddress::Any; } - if (d->tcpServer->listen(hostaddress, d->port)) - qDebug("QML Debugger: Waiting for connection on port %d...", d->port); - else - qWarning("QML Debugger: Unable to listen to port %d.", d->port); + int port = d->portFrom; + do { + if (d->tcpServer->listen(hostaddress, port)) { + qDebug("QML Debugger: Waiting for connection on port %d...", port); + break; + } + ++port; + } while (port <= d->portTo); + if (port > d->portTo) { + if (d->portFrom == d->portTo) + qWarning("QML Debugger: Unable to listen to port %d.", d->portFrom); + else + qWarning("QML Debugger: Unable to listen to ports %d - %d.", d->portFrom, d->portTo); + } } diff --git a/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.h b/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.h index 33157906c8..525ed50e51 100644 --- a/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.h +++ b/src/plugins/qmltooling/qmldbg_tcp/qtcpserverconnection.h @@ -61,7 +61,7 @@ public: ~QTcpServerConnection(); void setServer(QQmlDebugServer *server); - void setPort(int port, bool bock, const QString &hostaddress); + void setPortRange(int portFrom, int portTo, bool bock, const QString &hostaddress); bool isConnected() const; void send(const QList &messages); -- cgit v1.2.3