diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp index c9cd903b5a796b61b5762f8da7cd3093c541f85f..b3bdefa45a074241ad7a6f4708a3576254cf456e 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.cpp @@ -42,19 +42,15 @@ NodeInstanceClientProxy::NodeInstanceClientProxy(QObject *parent) m_baseStateNodeInstancePreview(new PreviewNodeInstanceServer(this)), m_blockSize(0) { - m_slowSocket = new QLocalSocket(this); - m_slowSocket->connectToServer(QCoreApplication::arguments().at(1), QIODevice::ReadWrite | QIODevice::Unbuffered); - m_slowSocket->waitForConnected(-1); - - m_fastSocket = new QLocalSocket(this); - connect(m_fastSocket, SIGNAL(readyRead()), this, SLOT(readDataStream())); - connect(m_fastSocket, SIGNAL(error(QLocalSocket::LocalSocketError)), QCoreApplication::instance(), SLOT(quit())); - connect(m_fastSocket, SIGNAL(disconnected()), QCoreApplication::instance(), SLOT(quit())); - m_fastSocket->connectToServer(QCoreApplication::arguments().at(1), QIODevice::ReadWrite | QIODevice::Unbuffered); - m_fastSocket->waitForConnected(-1); + m_socket = new QLocalSocket(this); + connect(m_socket, SIGNAL(readyRead()), this, SLOT(readDataStream())); + connect(m_socket, SIGNAL(error(QLocalSocket::LocalSocketError)), QCoreApplication::instance(), SLOT(quit())); + connect(m_socket, SIGNAL(disconnected()), QCoreApplication::instance(), SLOT(quit())); + m_socket->connectToServer(QCoreApplication::arguments().at(1), QIODevice::ReadWrite | QIODevice::Unbuffered); + m_socket->waitForConnected(-1); } -void NodeInstanceClientProxy::writeSlowCommand(const QVariant &command) +void NodeInstanceClientProxy::writeCommand(const QVariant &command) { QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); @@ -63,49 +59,37 @@ void NodeInstanceClientProxy::writeSlowCommand(const QVariant &command) out.device()->seek(0); out << quint32(block.size() - sizeof(quint32)); - m_slowSocket->write(block); -} - -void NodeInstanceClientProxy::writeFastCommand(const QVariant &command) -{ - QByteArray block; - QDataStream out(&block, QIODevice::WriteOnly); - out << quint32(0); - out << command; - out.device()->seek(0); - out << quint32(block.size() - sizeof(quint32)); - - m_fastSocket->write(block); + m_socket->write(block); } void NodeInstanceClientProxy::informationChanged(const InformationChangedCommand &command) { - writeFastCommand(QVariant::fromValue(command)); + writeCommand(QVariant::fromValue(command)); } void NodeInstanceClientProxy::valuesChanged(const ValuesChangedCommand &command) { - writeFastCommand(QVariant::fromValue(command)); + writeCommand(QVariant::fromValue(command)); } void NodeInstanceClientProxy::pixmapChanged(const PixmapChangedCommand &command) { - writeSlowCommand(QVariant::fromValue(command)); + writeCommand(QVariant::fromValue(command)); } void NodeInstanceClientProxy::childrenChanged(const ChildrenChangedCommand &command) { - writeFastCommand(QVariant::fromValue(command)); + writeCommand(QVariant::fromValue(command)); } void NodeInstanceClientProxy::statePreviewImagesChanged(const StatePreviewImageChangedCommand &command) { - writeSlowCommand(QVariant::fromValue(command)); + writeCommand(QVariant::fromValue(command)); } void NodeInstanceClientProxy::componentCompleted(const ComponentCompletedCommand &command) { - writeFastCommand(QVariant::fromValue(command)); + writeCommand(QVariant::fromValue(command)); } void NodeInstanceClientProxy::flush() @@ -114,24 +98,24 @@ void NodeInstanceClientProxy::flush() qint64 NodeInstanceClientProxy::bytesToWrite() const { - return m_slowSocket->bytesToWrite(); + return m_socket->bytesToWrite(); } void NodeInstanceClientProxy::readDataStream() { QList<QVariant> commandList; - while (!m_fastSocket->atEnd()) { - if (m_fastSocket->bytesAvailable() < int(sizeof(quint32))) + while (!m_socket->atEnd()) { + if (m_socket->bytesAvailable() < int(sizeof(quint32))) break; - QDataStream in(m_fastSocket); + QDataStream in(m_socket); if (m_blockSize == 0) { in >> m_blockSize; } - if (m_fastSocket->bytesAvailable() < m_blockSize) + if (m_socket->bytesAvailable() < m_blockSize) break; QVariant command; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h index 6d769c114c297e24155c41d3e4c24356acc75443..a570dc4e39059652a6d6fedb028671156ea9858b 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceclientproxy.h @@ -46,10 +46,10 @@ public: qint64 bytesToWrite() const; protected: - void writeSlowCommand(const QVariant &command); - void writeFastCommand(const QVariant &command); + void writeCommand(const QVariant &command); void dispatchCommand(const QVariant &command); NodeInstanceServerInterface *nodeInstanceServer() const; + NodeInstanceServerInterface *baseStateNodeInstancePreview() const; void createInstances(const CreateInstancesCommand &command); void changeFileUrl(const ChangeFileUrlCommand &command); @@ -69,8 +69,7 @@ private slots: void readDataStream(); private: - QLocalSocket *m_slowSocket; - QLocalSocket *m_fastSocket; + QLocalSocket *m_socket; NodeInstanceServerInterface *m_nodeInstanceServer; NodeInstanceServerInterface *m_baseStateNodeInstancePreview; QHash<qint32, QWeakPointer<NodeInstanceServerInterface> > m_nodeInstancePreviewVector; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 41d26d64a8e3044a2a5d7b0d5e03fa093dba7e06..c3112236d84a23b2376ca9438bb21ddadbb0338d 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -41,8 +41,7 @@ NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceV : NodeInstanceServerInterface(nodeInstanceView), m_localServer(new QLocalServer(this)), m_nodeInstanceView(nodeInstanceView), - m_slowBlockSize(0), - m_fastBlockSize(0) + m_blockSize(0) { QString socketToken(QUuid::createUuid().toString()); @@ -60,16 +59,9 @@ NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceV if (!m_localServer->hasPendingConnections()) m_localServer->waitForNewConnection(-1); - m_slowSocket = m_localServer->nextPendingConnection(); - Q_ASSERT(m_slowSocket); - connect(m_slowSocket.data(), SIGNAL(readyRead()), this, SLOT(readSlowDataStream())); - - if (!m_localServer->hasPendingConnections()) - m_localServer->waitForNewConnection(-1); - - m_fastSocket = m_localServer->nextPendingConnection(); - Q_ASSERT(m_fastSocket); - connect(m_fastSocket.data(), SIGNAL(readyRead()), this, SLOT(readFastDataStream())); + m_socket = m_localServer->nextPendingConnection(); + Q_ASSERT(m_socket); + connect(m_socket.data(), SIGNAL(readyRead()), this, SLOT(readDataStream())); m_localServer->close(); } @@ -113,12 +105,12 @@ NodeInstanceClientInterface *NodeInstanceServerProxy::nodeInstanceClient() const void NodeInstanceServerProxy::setBlockUpdates(bool block) { - m_slowSocket->blockSignals(block); + m_socket->blockSignals(block); } void NodeInstanceServerProxy::writeCommand(const QVariant &command) { - Q_ASSERT(m_fastSocket.data()); + Q_ASSERT(m_socket.data()); QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); @@ -127,67 +119,36 @@ void NodeInstanceServerProxy::writeCommand(const QVariant &command) out.device()->seek(0); out << quint32(block.size() - sizeof(quint32)); - m_fastSocket->write(block); + m_socket->write(block); } void NodeInstanceServerProxy::processFinished(int /*exitCode*/, QProcess::ExitStatus /* exitStatus */) { - m_slowSocket->close(); + m_socket->close(); emit processCrashed(); } -void NodeInstanceServerProxy::readFastDataStream() -{ - QList<QVariant> commandList; - - while (!m_fastSocket->atEnd()) { - if (m_fastSocket->bytesAvailable() < int(sizeof(quint32))) - break; - - QDataStream in(m_fastSocket.data()); - - if (m_fastBlockSize == 0) { - in >> m_fastBlockSize; - } - - if (m_fastSocket->bytesAvailable() < m_fastBlockSize) - break; - - QVariant command; - in >> command; - m_fastBlockSize = 0; - - Q_ASSERT(in.status() == QDataStream::Ok); - - commandList.append(command); - } - - foreach (const QVariant &command, commandList) { - dispatchCommand(command); - } -} - -void NodeInstanceServerProxy::readSlowDataStream() +void NodeInstanceServerProxy::readDataStream() { QList<QVariant> commandList; - while (!m_slowSocket->atEnd()) { - if (m_slowSocket->bytesAvailable() < int(sizeof(quint32))) + while (!m_socket->atEnd()) { + if (m_socket->bytesAvailable() < int(sizeof(quint32))) break; - QDataStream in(m_slowSocket.data()); + QDataStream in(m_socket.data()); - if (m_slowBlockSize == 0) { - in >> m_slowBlockSize; + if (m_blockSize == 0) { + in >> m_blockSize; } - if (m_slowSocket->bytesAvailable() < m_slowBlockSize) + if (m_socket->bytesAvailable() < m_blockSize) break; QVariant command; in >> command; - m_slowBlockSize = 0; + m_blockSize = 0; Q_ASSERT(in.status() == QDataStream::Ok); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h index d03ca9a4beb04c849b757298175ffac54ac63e52..f4d4b3ab989033818765c3771386c583cedcfa90 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h @@ -51,17 +51,14 @@ signals: private slots: void processFinished(int exitCode, QProcess::ExitStatus exitStatus); - void readFastDataStream(); - void readSlowDataStream(); + void readDataStream(); private: QWeakPointer<QLocalServer> m_localServer; - QWeakPointer<QLocalSocket> m_slowSocket; - QWeakPointer<QLocalSocket> m_fastSocket; + QWeakPointer<QLocalSocket> m_socket; QWeakPointer<NodeInstanceView> m_nodeInstanceView; QWeakPointer<QProcess> m_qmlPuppetProcess; - quint32 m_slowBlockSize; - quint32 m_fastBlockSize; + quint32 m_blockSize; }; } // namespace QmlDesigner