diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2018-01-25 11:29:53 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2018-01-26 13:50:49 +0000 |
commit | af54011bd5d3d52d3cee9a3340da6939da9468c7 (patch) | |
tree | 1e9b5b980894c591189f4f28bc7cb8fe41c464f7 | |
parent | e06dd6fbd9921c8db3b2bcb054b23b387ded4884 (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.cpp | 22 |
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" |