Ref T105, use enabled in CContinuousWorker

* removed slots
* getName
This commit is contained in:
Klaus Basan
2017-07-09 01:24:33 +02:00
committed by Mathew Sutcliffe
parent 291af98770
commit 7f3643fb0e
3 changed files with 23 additions and 10 deletions

View File

@@ -138,25 +138,27 @@ namespace BlackMisc
moveToThread(thread); moveToThread(thread);
connect(thread, &QThread::started, this, &CContinuousWorker::initialize); connect(thread, &QThread::started, this, &CContinuousWorker::initialize);
connect(thread, &QThread::finished, this, &CContinuousWorker::cleanup); connect(thread, &QThread::finished, this, &CContinuousWorker::cleanup);
connect(thread, &QThread::finished, this, &CContinuousWorker::ps_finish); connect(thread, &QThread::finished, this, &CContinuousWorker::finish);
thread->start(priority); thread->start(priority);
} }
void CContinuousWorker::quit() noexcept void CContinuousWorker::quit() noexcept
{ {
Q_ASSERT_X(!CThreadUtils::isApplicationThreadObjectThread(this), Q_FUNC_INFO, "Try to stop main thread"); Q_ASSERT_X(!CThreadUtils::isApplicationThreadObjectThread(this), Q_FUNC_INFO, "Try to stop main thread");
setEnabled(false);
thread()->quit(); thread()->quit();
} }
void CContinuousWorker::quitAndWait() noexcept void CContinuousWorker::quitAndWait() noexcept
{ {
Q_ASSERT_X(!CThreadUtils::isApplicationThreadObjectThread(this), Q_FUNC_INFO, "Try to stop main thread"); Q_ASSERT_X(!CThreadUtils::isApplicationThreadObjectThread(this), Q_FUNC_INFO, "Try to stop main thread");
setEnabled(false);
auto *ownThread = thread(); auto *ownThread = thread();
quit(); quit();
ownThread->wait(); ownThread->wait();
} }
void CContinuousWorker::ps_finish() void CContinuousWorker::finish()
{ {
setFinished(); setFinished();

View File

@@ -289,18 +289,28 @@ namespace BlackMisc
//! \threadsafe Will deadlock if called by the worker thread. //! \threadsafe Will deadlock if called by the worker thread.
virtual void quitAndWait() noexcept final override; virtual void quitAndWait() noexcept final override;
protected slots: //! Enabled (running)?
//! \threadsafe
bool isEnabled() const { return m_enabled; }
//! Enabled (running)?
//! \threadsafe
void setEnabled(bool enabled) { m_enabled = enabled; }
protected:
//! Called when the thread is started. //! Called when the thread is started.
virtual void initialize() {} virtual void initialize() {}
//! Called when the thread is finished. //! Called when the thread is finished.
virtual void cleanup() {} virtual void cleanup() {}
private slots: //! Name of the worker
//! Called after cleanup(). const QString &getName() { return m_name; }
void ps_finish();
private: private:
//! Called after cleanup().
void finish();
template <typename T> template <typename T>
friend class CWorkerPointer; friend class CWorkerPointer;
@@ -309,7 +319,8 @@ namespace BlackMisc
using CWorkerBase::setFinished; using CWorkerBase::setFinished;
QObject *m_owner = nullptr; QObject *m_owner = nullptr;
QString m_name; QString m_name; //!< worker's name
std::atomic<bool> m_enabled { true }; //!< marker it is enabled
}; };
/*! /*!

View File

@@ -52,9 +52,9 @@ namespace BlackCoreTest
CTestReaders::~CTestReaders() CTestReaders::~CTestReaders()
{ {
this->m_airportReader->gracefulShutdown(); this->m_airportReader->setEnabled(false);
this->m_icaoReader->gracefulShutdown(); this->m_icaoReader->setEnabled(false);
this->m_modelReader->gracefulShutdown(); this->m_modelReader->setEnabled(false);
} }
void CTestReaders::readIcaoData() void CTestReaders::readIcaoData()