summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2018-01-25 11:29:53 +0100
committerUlf Hermann <ulf.hermann@qt.io>2018-01-26 13:50:49 +0000
commitaf54011bd5d3d52d3cee9a3340da6939da9468c7 (patch)
tree1e9b5b980894c591189f4f28bc7cb8fe41c464f7
parente06dd6fbd9921c8db3b2bcb054b23b387ded4884 (diff)
Generalize the "input closed" mechanism
When we are done reading perf data, we know that we don't have to process any further signals from the input device anymore. This is not specific to TCP sockets as input devices. Change-Id: I898ea53dde53d13a887b2e702d251f8d9f511754 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
-rw-r--r--app/main.cpp22
1 files changed, 6 insertions, 16 deletions
diff --git a/app/main.cpp b/app/main.cpp
index 11257ca..361a029 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -63,14 +63,12 @@ public:
void tryConnect();
public slots:
- void readingFinished();
void processError(QAbstractSocket::SocketError error);
private:
QString host;
quint16 port = 0;
quint16 tries = 0;
- bool reading = true;
};
int main(int argc, char *argv[])
@@ -283,6 +281,7 @@ int main(int argc, char *argv[])
}
QObject::connect(infile.data(), &QIODevice::aboutToClose, &data, &PerfData::finishReading);
+ QObject::connect(&data, &PerfData::finished, infile.data(), [&](){ infile->disconnect(); });
QObject::connect(infile.data(), &QIODevice::readyRead, &data, &PerfData::read);
if (infile->bytesAvailable() > 0)
data.read();
@@ -302,8 +301,6 @@ int main(int argc, char *argv[])
if (parser.isSet(host)) {
PerfTcpSocket *socket = static_cast<PerfTcpSocket *>(infile.data());
- QObject::connect(socket, &QTcpSocket::disconnected, &data, &PerfData::finishReading);
- QObject::connect(&data, &PerfData::finished, socket, &PerfTcpSocket::readingFinished);
socket->tryConnect();
} else {
if (!infile->open(QIODevice::ReadOnly))
@@ -318,13 +315,11 @@ int main(int argc, char *argv[])
void PerfTcpSocket::processError(QAbstractSocket::SocketError error)
{
- if (reading) {
- qWarning() << "socket error" << error << errorString();
- if (tries > 10)
- qApp->exit(TcpSocketError);
- else
- QTimer::singleShot(1 << tries, this, &PerfTcpSocket::tryConnect);
- } // Otherwise ignore the error. We don't need the socket anymore
+ qWarning() << "socket error" << error << errorString();
+ if (tries > 10)
+ qApp->exit(TcpSocketError);
+ else
+ QTimer::singleShot(1 << tries, this, &PerfTcpSocket::tryConnect);
}
@@ -341,9 +336,4 @@ void PerfTcpSocket::tryConnect()
connectToHost(host, port, QIODevice::ReadOnly);
}
-void PerfTcpSocket::readingFinished()
-{
- reading = false;
-}
-
#include "main.moc"