client plugin advertisement
1. Client sends
"QDeclarativeDebugServer" 1 pluginNames
- server plugin advertisement
+ server plugin advertisement (not implemented: all services are required to register before open())
1. Server sends
"QDeclarativeDebugClient" 1 pluginNames pluginVersions
plugin communication:
bool init(const QString &pluginName, bool block);
- void advertisePlugins();
void cleanup();
QQmlDebugServerConnection *loadConnectionPlugin(const QString &pluginName);
}
};
-void QQmlDebugServerImpl::advertisePlugins()
-{
- if (!m_gotHello)
- return;
-
- QByteArray message;
- {
- QQmlDebugStream out(&message, QIODevice::WriteOnly);
- QStringList pluginNames;
- QList<float> pluginVersions;
- const QList<QQmlDebugService *> debugServices = m_plugins.values();
- const int count = debugServices.count();
- pluginNames.reserve(count);
- pluginVersions.reserve(count);
- foreach (QQmlDebugService *service, debugServices) {
- pluginNames << service->name();
- pluginVersions << service->version();
- }
- out << QString(QStringLiteral("QDeclarativeDebugClient")) << 1 << pluginNames << pluginVersions;
- }
-
- QMetaObject::invokeMethod(this, "sendMessages", Qt::QueuedConnection,
- Q_ARG(QList<QByteArray>, QList<QByteArray>() << message));
-}
-
void QQmlDebugServerImpl::cleanup()
{
{
if (!service || m_plugins.contains(service->name()))
return false;
m_plugins.insert(service->name(), service);
- advertisePlugins();
QQmlDebugService::State newState = QQmlDebugService::Unavailable;
if (m_clientPlugins.contains(service->name()))
newState = QQmlDebugService::Enabled;
return false;
m_plugins.remove(service->name());
- advertisePlugins();
-
return true;
}