Own threadpool for feed downloader.

This commit is contained in:
Martin Rotter 2016-08-23 11:00:37 +02:00
parent f1532fc5a5
commit 61f3ab955c
2 changed files with 9 additions and 2 deletions

View File

@ -26,9 +26,11 @@
FeedDownloader::FeedDownloader(QObject *parent)
: QObject(parent), m_results(FeedDownloadResults()), m_feedsUpdated(0), m_feedsToUpdate(0),
: QObject(parent), m_threadPool(new QThreadPool(this)), m_results(FeedDownloadResults()), m_feedsUpdated(0), m_feedsToUpdate(0),
m_feedsUpdating(0), m_feedsTotalCount(0), m_stopUpdate(false) {
qRegisterMetaType<FeedDownloadResults>("FeedDownloadResults");
m_threadPool->setMaxThreadCount(6);
}
FeedDownloader::~FeedDownloader() {
@ -80,7 +82,7 @@ void FeedDownloader::updateFeeds(const QList<Feed*> &feeds) {
connect(feeds.at(i), &Feed::messagesObtained, this, &FeedDownloader::oneFeedUpdateFinished,
(Qt::ConnectionType) (Qt::UniqueConnection | Qt::AutoConnection));
QThreadPool::globalInstance()->start(feeds.at(i));
m_threadPool->start(feeds.at(i));
m_feedsUpdating++;
m_feedsToUpdate--;
@ -88,6 +90,9 @@ void FeedDownloader::updateFeeds(const QList<Feed*> &feeds) {
}
void FeedDownloader::stopRunningUpdate() {
m_threadPool->clear();
// We want indicate that no more feeds will be updated in this queue.
m_stopUpdate = true;
}

View File

@ -26,6 +26,7 @@
class Feed;
class QThreadPool;
// Represents results of batch feed updates.
class FeedDownloadResults {
@ -88,6 +89,7 @@ class FeedDownloader : public QObject {
private:
void finalizeUpdate();
QThreadPool *m_threadPool;
FeedDownloadResults m_results;
int m_feedsUpdated;