From 3e1eb350c52a6bdf33d6efd8e1e8cd1369be2074 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 25 Nov 2015 20:35:48 +0000 Subject: [PATCH] refs #476 CThreadedReader::gracefulShutdown using the worker abandon feature, removed m_shutdown. --- src/blackcore/databasereader.cpp | 4 ++-- src/blackcore/setupreader.cpp | 4 ++-- src/blackcore/vatsimbookingreader.cpp | 4 ++-- src/blackcore/vatsimdatafilereader.cpp | 4 ++-- src/blackcore/vatsimmetarreader.cpp | 4 ++-- src/blackmisc/threadedreader.cpp | 19 +------------------ src/blackmisc/threadedreader.h | 8 -------- 7 files changed, 11 insertions(+), 36 deletions(-) diff --git a/src/blackcore/databasereader.cpp b/src/blackcore/databasereader.cpp index 12633881d..232ca9ca8 100644 --- a/src/blackcore/databasereader.cpp +++ b/src/blackcore/databasereader.cpp @@ -26,7 +26,7 @@ namespace BlackCore void CDatabaseReader::readInBackgroundThread(CEntityFlags::Entity entities) { - if (isFinishedOrShutdown()) { return; } + if (isAbandoned()) { return; } this->m_watchdogTimer.stop(); bool s = QMetaObject::invokeMethod(this, "ps_read", Q_ARG(BlackMisc::Network::CEntityFlags::Entity, entities)); Q_ASSERT_X(s, Q_FUNC_INFO, "Invoke failed"); @@ -37,7 +37,7 @@ namespace BlackCore { this->threadAssertCheck(); JsonDatastoreResponse datastoreResponse; - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).info("Terminated data parsing process"); // for users nwReply->abort(); diff --git a/src/blackcore/setupreader.cpp b/src/blackcore/setupreader.cpp index 4c72f0b68..216fa0fd1 100644 --- a/src/blackcore/setupreader.cpp +++ b/src/blackcore/setupreader.cpp @@ -143,7 +143,7 @@ namespace BlackCore QString urlString(url.toString()); QString replyMessage(nwReply->errorString()); - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).info("Terminated loading bootstrap files"); nwReply->abort(); @@ -232,7 +232,7 @@ namespace BlackCore QString urlString(url.toString()); QString replyMessage(nwReply->errorString()); - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).info("Terminated loading of update info"); nwReply->abort(); diff --git a/src/blackcore/vatsimbookingreader.cpp b/src/blackcore/vatsimbookingreader.cpp index 6a2a1f2a5..38b2f058a 100644 --- a/src/blackcore/vatsimbookingreader.cpp +++ b/src/blackcore/vatsimbookingreader.cpp @@ -57,7 +57,7 @@ namespace BlackCore this->threadAssertCheck(); // Worker thread, make sure to write no members here! - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).debug() << Q_FUNC_INFO; CLogMessage(this).info("terminated booking parsing process"); // for users @@ -93,7 +93,7 @@ namespace BlackCore CAtcStationList bookedStations; for (int i = 0; i < size; i++) { - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).debug() << Q_FUNC_INFO; CLogMessage(this).info("Terminated booking parsing process"); // for users diff --git a/src/blackcore/vatsimdatafilereader.cpp b/src/blackcore/vatsimdatafilereader.cpp index adf3f4a4a..dd7cf6fa2 100644 --- a/src/blackcore/vatsimdatafilereader.cpp +++ b/src/blackcore/vatsimdatafilereader.cpp @@ -172,7 +172,7 @@ namespace BlackCore this->threadAssertCheck(); // Worker thread, make sure to write only synced here! - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).debug() << Q_FUNC_INFO; CLogMessage(this).info("Terminated VATSIM file parsing process"); // for users @@ -201,7 +201,7 @@ namespace BlackCore Section section = SectionNone; for (const QString &cl : lines) { - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).debug() << Q_FUNC_INFO; CLogMessage(this).info("Terminated booking parsing process"); // for users diff --git a/src/blackcore/vatsimmetarreader.cpp b/src/blackcore/vatsimmetarreader.cpp index f798a92d9..0263a3939 100644 --- a/src/blackcore/vatsimmetarreader.cpp +++ b/src/blackcore/vatsimmetarreader.cpp @@ -76,7 +76,7 @@ namespace BlackCore this->threadAssertCheck(); // Worker thread, make sure to write thread safe! - if (this->isFinishedOrShutdown()) + if (this->isAbandoned()) { CLogMessage(this).debug() << Q_FUNC_INFO; CLogMessage(this).info("terminated METAR decoding process"); // for users @@ -94,7 +94,7 @@ namespace BlackCore QTextStream lineReader(&metarData); while (!lineReader.atEnd()) { - if (this->isFinishedOrShutdown()) { return; } + if (this->isAbandoned()) { return; } QString line = lineReader.readLine(); CMetar metar = m_metarDecoder.decode(line); if (metar != CMetar()) diff --git a/src/blackmisc/threadedreader.cpp b/src/blackmisc/threadedreader.cpp index 1f4271453..f68d48e43 100644 --- a/src/blackmisc/threadedreader.cpp +++ b/src/blackmisc/threadedreader.cpp @@ -36,11 +36,6 @@ namespace BlackMisc return -1; } - bool CThreadedReader::isFinishedOrShutdown() const - { - return m_shutdown || isFinished(); - } - QDateTime CThreadedReader::getUpdateTimestamp() const { QReadLocker lock(&this->m_lock); @@ -53,14 +48,6 @@ namespace BlackMisc this->m_updateTimestamp = updateTimestamp; } - void CThreadedReader::requestStop() - { - if (m_updateTimer) - { - QMetaObject::invokeMethod(m_updateTimer, "stop"); - } - } - void CThreadedReader::requestReload() { // default implementation, subclasses shall override as required @@ -69,15 +56,11 @@ namespace BlackMisc void CThreadedReader::gracefulShutdown() { - if (this->m_shutdown) { return; } - this->m_shutdown = true; - this->requestStop(); - this->quit(); + this->abandonAndWait(); } CThreadedReader::~CThreadedReader() { - this->m_shutdown = true; } void CThreadedReader::setInterval(int updatePeriodMs) diff --git a/src/blackmisc/threadedreader.h b/src/blackmisc/threadedreader.h index 893e9f0da..82c345af6 100644 --- a/src/blackmisc/threadedreader.h +++ b/src/blackmisc/threadedreader.h @@ -38,10 +38,6 @@ namespace BlackMisc //! \threadsafe void setUpdateTimestamp(const QDateTime &updateTimestamp); - //! Request to stop - //! \threadsafe - void requestStop(); - //! Request new reading //! \note override as required, default is to call initialize() virtual void requestReload(); @@ -65,7 +61,6 @@ namespace BlackMisc protected: QTimer *m_updateTimer = nullptr; //!< update timer - std::atomic m_shutdown { false }; //!< in shutdown process mutable QReadWriteLock m_lock {QReadWriteLock::Recursive}; //!< lock which can be used from the derived classes //! Constructor @@ -74,9 +69,6 @@ namespace BlackMisc //! When was reply last modified, -1 if N/A qint64 lastModifiedMsSinceEpoch(QNetworkReply *nwReply) const; - //! Shutdown in progress or finished - bool isFinishedOrShutdown() const; - //! Make sure everthing runs correctly in own thread void threadAssertCheck() const;