private:
// private slot
- void _q_sendMessage(const QByteArray &message);
+ void _q_sendMessages(const QList<QByteArray> &messages);
};
class QDeclarativeDebugServerThread : public QThread
gotHello(false),
thread(0)
{
+ // used in _q_sendMessages
+ qRegisterMetaType<QList<QByteArray> >("QList<QByteArray>");
}
void QDeclarativeDebugServerPrivate::advertisePlugins()
out << QString(QLatin1String("QDeclarativeDebugClient")) << 1 << pluginNames << pluginVersions;
}
- QMetaObject::invokeMethod(q, "_q_sendMessage", Qt::QueuedConnection, Q_ARG(QByteArray, message));
+ QMetaObject::invokeMethod(q, "_q_sendMessages", Qt::QueuedConnection, Q_ARG(QList<QByteArray>, QList<QByteArray>() << message));
}
QDeclarativeDebugServerConnection *QDeclarativeDebugServerPrivate::loadConnectionPlugin(
out << QString(QLatin1String("QDeclarativeDebugClient")) << 0 << protocolVersion << pluginNames << pluginVersions;
}
- d->connection->send(helloAnswer);
+ d->connection->send(QList<QByteArray>() << helloAnswer);
d->gotHello = true;
}
}
-void QDeclarativeDebugServerPrivate::_q_sendMessage(const QByteArray &message)
+void QDeclarativeDebugServerPrivate::_q_sendMessages(const QList<QByteArray> &messages)
{
if (connection)
- connection->send(message);
+ connection->send(messages);
}
QList<QDeclarativeDebugService*> QDeclarativeDebugServer::services() const
return true;
}
-void QDeclarativeDebugServer::sendMessage(QDeclarativeDebugService *service,
- const QByteArray &message)
+void QDeclarativeDebugServer::sendMessages(QDeclarativeDebugService *service,
+ const QList<QByteArray> &messages)
{
- QByteArray msg;
- {
- QDataStream out(&msg, QIODevice::WriteOnly);
+ QList<QByteArray> prefixedMessages;
+ foreach (const QByteArray &message, messages) {
+ QByteArray prefixed;
+ QDataStream out(&prefixed, QIODevice::WriteOnly);
out << service->name() << message;
+ prefixedMessages << prefixed;
}
- QMetaObject::invokeMethod(this, "_q_sendMessage", Qt::QueuedConnection, Q_ARG(QByteArray, msg));
+ QMetaObject::invokeMethod(this, "_q_sendMessages", Qt::QueuedConnection, Q_ARG(QList<QByteArray>, prefixedMessages));
}
bool QDeclarativeDebugServer::waitForMessage(QDeclarativeDebugService *service)
void receiveMessage(const QByteArray &message);
bool waitForMessage(QDeclarativeDebugService *service);
- void sendMessage(QDeclarativeDebugService *service, const QByteArray &message);
+ void sendMessages(QDeclarativeDebugService *service, const QList<QByteArray> &messages);
private:
friend class QDeclarativeDebugService;
friend class QDeclarativeDebugServicePrivate;
friend class QDeclarativeDebugServerThread;
QDeclarativeDebugServer();
- Q_PRIVATE_SLOT(d_func(), void _q_sendMessage(QByteArray))
+ Q_PRIVATE_SLOT(d_func(), void _q_sendMessages(QList<QByteArray>))
};
QT_END_NAMESPACE
virtual void setServer(QDeclarativeDebugServer *server) = 0;
virtual void setPort(int port, bool bock) = 0;
virtual bool isConnected() const = 0;
- virtual void send(const QByteArray &message) = 0;
+ virtual void send(const QList<QByteArray> &messages) = 0;
virtual void disconnect() = 0;
virtual bool waitForMessage() = 0;
};
void QDeclarativeDebugService::sendMessage(const QByteArray &message)
{
+ sendMessages(QList<QByteArray>() << message);
+}
+
+void QDeclarativeDebugService::sendMessages(const QList<QByteArray> &messages)
+{
Q_D(QDeclarativeDebugService);
if (status() != Enabled)
return;
- d->server->sendMessage(this, message);
+ d->server->sendMessages(this, messages);
}
bool QDeclarativeDebugService::waitForMessage()
Status status() const;
void sendMessage(const QByteArray &);
+ void sendMessages(const QList<QByteArray> &);
bool waitForMessage();
static int idForObject(QObject *);
void QDeclarativeDebugTrace::sendMessages()
{
QMutexLocker locker(&m_mutex);
- //### this is a suboptimal way to send batched messages
+ QList<QByteArray> messages;
for (int i = 0; i < m_data.count(); ++i)
- sendMessage(m_data.at(i).toByteArray());
+ messages << m_data.at(i).toByteArray();
+ QDeclarativeDebugService::sendMessages(messages);
m_data.clear();
//indicate completion
{
Q_Q(QV8ProfilerService);
+ QList<QByteArray> messages;
for (int i = 0; i < m_data.count(); ++i)
- q->sendMessage(m_data.at(i).toByteArray());
+ messages << m_data.at(i).toByteArray();
+ q->sendMessages(messages);
m_data.clear();
//indicate completion
return d->socket && d->socket->state() == QTcpSocket::ConnectedState;
}
-void QTcpServerConnection::send(const QByteArray &message)
+void QTcpServerConnection::send(const QList<QByteArray> &messages)
{
Q_D(QTcpServerConnection);
|| !d->protocol || !d->socket)
return;
- QPacket pack;
- pack.writeRawData(message.data(), message.length());
-
- d->protocol->send(pack);
+ foreach (const QByteArray &message, messages) {
+ QPacket pack;
+ pack.writeRawData(message.data(), message.length());
+ d->protocol->send(pack);
+ }
d->socket->flush();
}
void setPort(int port, bool bock);
bool isConnected() const;
- void send(const QByteArray &message);
+ void send(const QList<QByteArray> &messages);
void disconnect();
bool waitForMessage();