From 5c0367fd637606043db41f21444d584c93bee9f0 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 20 Jul 2015 12:46:05 +0200 Subject: Immediately start reading if there is data available --- synchronizer/listener.cpp | 9 ++++++++- synchronizer/listener.h | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'synchronizer') diff --git a/synchronizer/listener.cpp b/synchronizer/listener.cpp index 36fa6ea..d9ee46d 100644 --- a/synchronizer/listener.cpp +++ b/synchronizer/listener.cpp @@ -124,6 +124,9 @@ void Listener::acceptConnection() this, &Listener::clientDropped); m_checkConnectionsTimer->stop(); + if (socket->bytesAvailable()) { + readFromSocket(socket); + } } void Listener::clientDropped() @@ -156,13 +159,17 @@ void Listener::checkConnections() m_checkConnectionsTimer->start(); } -void Listener::readFromSocket() +void Listener::onDataAvailable() { QLocalSocket *socket = qobject_cast(sender()); if (!socket) { return; } + readFromSocket(socket); +} +void Listener::readFromSocket(QLocalSocket *socket) +{ Trace() << "Reading from socket..."; for (Client &client: m_connections) { if (client.socket == socket) { diff --git a/synchronizer/listener.h b/synchronizer/listener.h index 2577673..e03c310 100644 --- a/synchronizer/listener.h +++ b/synchronizer/listener.h @@ -73,7 +73,7 @@ private Q_SLOTS: void acceptConnection(); void clientDropped(); void checkConnections(); - void readFromSocket(); + void onDataAvailable(); void processClientBuffers(); void refreshRevision(); void quit(); @@ -85,6 +85,7 @@ private: void sendCommandCompleted(QLocalSocket *socket, uint messageId); void updateClientsWithRevision(); void loadResource(); + void readFromSocket(QLocalSocket *socket); QLocalServer *m_server; QVector m_connections; -- cgit v1.2.3