diff options
author | Aurindam Jana <aurindam.jana@nokia.com> | 2011-12-15 17:52:22 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-16 11:42:57 +0100 |
commit | cac6c2d474ae1bf42de3e8138cda71c9e5391437 (patch) | |
tree | f82ccad3abd269d0dfeaee7671a180e743b10672 /src/declarative | |
parent | 152a35b027258188bb57db2bafebe5b46d88eb43 (diff) |
DeclarativeDebug: Add version info to service plugins
Send the version info of each plugin alongwith the
plugin names to client.
Change-Id: I223689b32cdc5b0c48a4f508330033352b427937
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Diffstat (limited to 'src/declarative')
11 files changed, 79 insertions, 27 deletions
diff --git a/src/declarative/debugger/qdeclarativedebugclient.cpp b/src/declarative/debugger/qdeclarativedebugclient.cpp index 5018e9535e..9d5b88c319 100644 --- a/src/declarative/debugger/qdeclarativedebugclient.cpp +++ b/src/declarative/debugger/qdeclarativedebugclient.cpp @@ -75,7 +75,7 @@ public: QIODevice *device; bool gotHello; - QStringList serverPlugins; + QHash <QString, float> serverPlugins; QHash<QString, QDeclarativeDebugClient *> plugins; void advertisePlugins(); @@ -130,7 +130,21 @@ void QDeclarativeDebugConnectionPrivate::readyRead() int version = -1; pack >> version; if (version == protocolVersion) { - pack >> serverPlugins; + QStringList pluginNames; + QList<float> pluginVersions; + pack >> pluginNames; + if (!pack.isEmpty()) + pack >> pluginVersions; + + const int pluginNamesSize = pluginNames.size(); + const int pluginVersionsSize = pluginVersions.size(); + for (int i = 0; i < pluginNamesSize; ++i) { + float pluginVersion = 1.0; + if (i < pluginVersionsSize) + pluginVersion = pluginVersions.at(i); + serverPlugins.insert(pluginNames.at(i), pluginVersion); + } + validHello = true; } } @@ -163,8 +177,23 @@ void QDeclarativeDebugConnectionPrivate::readyRead() if (op == 1) { // Service Discovery - QStringList oldServerPlugins = serverPlugins; - pack >> serverPlugins; + QHash<QString, float> oldServerPlugins = serverPlugins; + serverPlugins.clear(); + + QStringList pluginNames; + QList<float> pluginVersions; + pack >> pluginNames; + if (!pack.isEmpty()) + pack >> pluginVersions; + + const int pluginNamesSize = pluginNames.size(); + const int pluginVersionsSize = pluginVersions.size(); + for (int i = 0; i < pluginNamesSize; ++i) { + float pluginVersion = 1.0; + if (i < pluginVersionsSize) + pluginVersion = pluginVersions.at(i); + serverPlugins.insert(pluginNames.at(i), pluginVersion); + } QHash<QString, QDeclarativeDebugClient *>::Iterator iter = plugins.begin(); for (; iter != plugins.end(); ++iter) { @@ -345,6 +374,14 @@ QString QDeclarativeDebugClient::name() const return d->name; } +float QDeclarativeDebugClient::serviceVersion() const +{ + Q_D(const QDeclarativeDebugClient); + if (d->connection->d->serverPlugins.contains(d->name)) + return d->connection->d->serverPlugins.value(d->name); + return -1; +} + QDeclarativeDebugClient::Status QDeclarativeDebugClient::status() const { Q_D(const QDeclarativeDebugClient); diff --git a/src/declarative/debugger/qdeclarativedebugclient_p.h b/src/declarative/debugger/qdeclarativedebugclient_p.h index 5b219358ff..7b9a342627 100644 --- a/src/declarative/debugger/qdeclarativedebugclient_p.h +++ b/src/declarative/debugger/qdeclarativedebugclient_p.h @@ -111,7 +111,7 @@ public: ~QDeclarativeDebugClient(); QString name() const; - + float serviceVersion() const; Status status() const; virtual void sendMessage(const QByteArray &); diff --git a/src/declarative/debugger/qdeclarativedebugserver.cpp b/src/declarative/debugger/qdeclarativedebugserver.cpp index b8963d24f3..23f1e0de7b 100644 --- a/src/declarative/debugger/qdeclarativedebugserver.cpp +++ b/src/declarative/debugger/qdeclarativedebugserver.cpp @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE version: an int representing the highest protocol version the client knows pluginNames: plugins available on client side 2. Server sends - "QDeclarativeDebugClient" 0 version pluginNames + "QDeclarativeDebugClient" 0 version pluginNames pluginVersions version: an int representing the highest protocol version the client & server know pluginNames: plugins available on server side. plugins both in the client and server message are enabled. client plugin advertisement @@ -71,7 +71,7 @@ QT_BEGIN_NAMESPACE "QDeclarativeDebugServer" 1 pluginNames server plugin advertisement 1. Server sends - "QDeclarativeDebugClient" 1 pluginNames + "QDeclarativeDebugClient" 1 pluginNames pluginVersions plugin communication: Everything send with a header different to "QDeclarativeDebugServer" is sent to the appropriate plugin. */ @@ -146,7 +146,13 @@ void QDeclarativeDebugServerPrivate::advertisePlugins() QByteArray message; { QDataStream out(&message, QIODevice::WriteOnly); - out << QString(QLatin1String("QDeclarativeDebugClient")) << 1 << plugins.keys(); + QStringList pluginNames; + QList<float> pluginVersions; + foreach (QDeclarativeDebugService *service, plugins.values()) { + pluginNames << service->name(); + pluginVersions << service->version(); + } + out << QString(QLatin1String("QDeclarativeDebugClient")) << 1 << pluginNames << pluginVersions; } QMetaObject::invokeMethod(q, "_q_sendMessage", Qt::QueuedConnection, Q_ARG(QByteArray, message)); @@ -326,7 +332,14 @@ void QDeclarativeDebugServer::receiveMessage(const QByteArray &message) QByteArray helloAnswer; { QDataStream out(&helloAnswer, QIODevice::WriteOnly); - out << QString(QLatin1String("QDeclarativeDebugClient")) << 0 << protocolVersion << d->plugins.keys(); + QStringList pluginNames; + QList<float> pluginVersions; + foreach (QDeclarativeDebugService *service, d->plugins.values()) { + pluginNames << service->name(); + pluginVersions << service->version(); + } + + out << QString(QLatin1String("QDeclarativeDebugClient")) << 0 << protocolVersion << pluginNames << pluginVersions; } d->connection->send(helloAnswer); diff --git a/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp index 2bdcf2ff92..560654099f 100644 --- a/src/declarative/debugger/qdeclarativedebugservice.cpp +++ b/src/declarative/debugger/qdeclarativedebugservice.cpp @@ -53,11 +53,12 @@ QDeclarativeDebugServicePrivate::QDeclarativeDebugServicePrivate() { } -QDeclarativeDebugService::QDeclarativeDebugService(const QString &name, QObject *parent) +QDeclarativeDebugService::QDeclarativeDebugService(const QString &name, float version, QObject *parent) : QObject(*(new QDeclarativeDebugServicePrivate), parent) { Q_D(QDeclarativeDebugService); d->name = name; + d->version = version; d->server = QDeclarativeDebugServer::instance(); d->status = QDeclarativeDebugService::NotConnected; @@ -65,11 +66,12 @@ QDeclarativeDebugService::QDeclarativeDebugService(const QString &name, QObject } QDeclarativeDebugService::QDeclarativeDebugService(QDeclarativeDebugServicePrivate &dd, - const QString &name, QObject *parent) + const QString &name, float version, QObject *parent) : QObject(dd, parent) { Q_D(QDeclarativeDebugService); d->name = name; + d->version = version; d->server = QDeclarativeDebugServer::instance(); d->status = QDeclarativeDebugService::NotConnected; } @@ -107,6 +109,12 @@ QString QDeclarativeDebugService::name() const return d->name; } +float QDeclarativeDebugService::version() const +{ + Q_D(const QDeclarativeDebugService); + return d->version; +} + QDeclarativeDebugService::Status QDeclarativeDebugService::status() const { Q_D(const QDeclarativeDebugService); diff --git a/src/declarative/debugger/qdeclarativedebugservice_p.h b/src/declarative/debugger/qdeclarativedebugservice_p.h index 3bcf310336..9698f91cbc 100644 --- a/src/declarative/debugger/qdeclarativedebugservice_p.h +++ b/src/declarative/debugger/qdeclarativedebugservice_p.h @@ -71,10 +71,11 @@ class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugService : public QObject Q_DISABLE_COPY(QDeclarativeDebugService) public: - explicit QDeclarativeDebugService(const QString &, QObject *parent = 0); + explicit QDeclarativeDebugService(const QString &, float version, QObject *parent = 0); ~QDeclarativeDebugService(); QString name() const; + float version() const; enum Status { NotConnected, Unavailable, Enabled }; Status status() const; @@ -91,7 +92,7 @@ public: static bool hasDebuggingClient(); protected: - QDeclarativeDebugService(QDeclarativeDebugServicePrivate &dd, const QString &, QObject *parent = 0); + QDeclarativeDebugService(QDeclarativeDebugServicePrivate &dd, const QString &name, float version, QObject *parent = 0); Status registerService(); diff --git a/src/declarative/debugger/qdeclarativedebugservice_p_p.h b/src/declarative/debugger/qdeclarativedebugservice_p_p.h index 12233ed739..3c501e8a76 100644 --- a/src/declarative/debugger/qdeclarativedebugservice_p_p.h +++ b/src/declarative/debugger/qdeclarativedebugservice_p_p.h @@ -71,6 +71,7 @@ public: QDeclarativeDebugServicePrivate(); QString name; + float version; QDeclarativeDebugServer *server; QDeclarativeDebugService::Status status; }; diff --git a/src/declarative/debugger/qdeclarativedebugtrace.cpp b/src/declarative/debugger/qdeclarativedebugtrace.cpp index f3f8156dc9..724399df7e 100644 --- a/src/declarative/debugger/qdeclarativedebugtrace.cpp +++ b/src/declarative/debugger/qdeclarativedebugtrace.cpp @@ -74,7 +74,7 @@ QByteArray QDeclarativeDebugData::toByteArray() const } QDeclarativeDebugTrace::QDeclarativeDebugTrace() - : QDeclarativeDebugService(QLatin1String("CanvasFrameRate")), + : QDeclarativeDebugService(QLatin1String("CanvasFrameRate"), 1), m_enabled(false), m_messageReceived(false) { m_timer.start(); diff --git a/src/declarative/debugger/qdeclarativeenginedebugservice.cpp b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp index f831929e57..0e3c05553f 100644 --- a/src/declarative/debugger/qdeclarativeenginedebugservice.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp @@ -67,7 +67,7 @@ QDeclarativeEngineDebugService *QDeclarativeEngineDebugService::instance() } QDeclarativeEngineDebugService::QDeclarativeEngineDebugService(QObject *parent) - : QDeclarativeDebugService(QLatin1String("QDeclarativeEngine"), parent), + : QDeclarativeDebugService(QLatin1String("QDeclarativeEngine"), 1, parent), m_watch(new QDeclarativeWatcher(this)), m_statesDelegate(0) { diff --git a/src/declarative/debugger/qdeclarativeinspectorservice.cpp b/src/declarative/debugger/qdeclarativeinspectorservice.cpp index 07fed4dbb1..729a71a77e 100644 --- a/src/declarative/debugger/qdeclarativeinspectorservice.cpp +++ b/src/declarative/debugger/qdeclarativeinspectorservice.cpp @@ -56,7 +56,7 @@ QT_BEGIN_NAMESPACE Q_GLOBAL_STATIC(QDeclarativeInspectorService, serviceInstance) QDeclarativeInspectorService::QDeclarativeInspectorService() - : QDeclarativeDebugService(QLatin1String("QDeclarativeObserverMode")) + : QDeclarativeDebugService(QLatin1String("QDeclarativeObserverMode"), 1) , m_currentInspectorPlugin(0) { registerService(); diff --git a/src/declarative/debugger/qv8debugservice.cpp b/src/declarative/debugger/qv8debugservice.cpp index 933c37a9ea..976f501ddb 100644 --- a/src/declarative/debugger/qv8debugservice.cpp +++ b/src/declarative/debugger/qv8debugservice.cpp @@ -51,16 +51,14 @@ //V8 DEBUG SERVICE PROTOCOL // <HEADER><COMMAND><DATA> // <HEADER> : "V8DEBUG" -// <COMMAND> : ["connect", "disconnect", "interrupt", "version", +// <COMMAND> : ["connect", "disconnect", "interrupt", // "v8request", "v8message", "breakonsignal", // "breakaftercompile"] // <DATA> : connect, disconnect, interrupt: empty -// version: <version_string> // v8request, v8message: <JSONrequest_string> // breakonsignal: <signalname_string><enabled_bool> // breakaftercompile: <enabled_bool> -const char *V8_DEBUGGER_KEY_VERSION_NUMBER = "1.1"; const char *V8_DEBUGGER_KEY_VERSION = "version"; const char *V8_DEBUGGER_KEY_CONNECT = "connect"; const char *V8_DEBUGGER_KEY_INTERRUPT = "interrupt"; @@ -122,7 +120,7 @@ public: QV8DebugService::QV8DebugService(QObject *parent) : QDeclarativeDebugService(*(new QV8DebugServicePrivate()), - QLatin1String("V8Debugger"), parent) + QLatin1String("V8Debugger"), 2, parent) { Q_D(QV8DebugService); v8ServiceInstancePtr = this; @@ -267,12 +265,6 @@ void QV8DebugService::messageReceived(const QByteArray &message) rs >> d->breakAfterCompile; sendMessage(QV8DebugServicePrivate::packMessage(QLatin1String(V8_DEBUGGER_KEY_BREAK_AFTER_COMPILE))); - } else if (command == V8_DEBUGGER_KEY_VERSION) { - //We dont check the client version - //just send the debugger version - sendMessage(QV8DebugServicePrivate::packMessage(QLatin1String(V8_DEBUGGER_KEY_VERSION), - QLatin1String(V8_DEBUGGER_KEY_VERSION_NUMBER))); - } } } diff --git a/src/declarative/debugger/qv8profilerservice.cpp b/src/declarative/debugger/qv8profilerservice.cpp index 7cbd336e17..f5c980ee78 100644 --- a/src/declarative/debugger/qv8profilerservice.cpp +++ b/src/declarative/debugger/qv8profilerservice.cpp @@ -100,7 +100,7 @@ public: }; QV8ProfilerService::QV8ProfilerService(QObject *parent) - : QDeclarativeDebugService(*(new QV8ProfilerServicePrivate()), QLatin1String("V8Profiler"), parent) + : QDeclarativeDebugService(*(new QV8ProfilerServicePrivate()), QLatin1String("V8Profiler"), 1, parent) { Q_D(QV8ProfilerService); |