Own threadpool for feed downloader.
This commit is contained in:
parent
f1532fc5a5
commit
61f3ab955c
@ -26,9 +26,11 @@
|
|||||||
|
|
||||||
|
|
||||||
FeedDownloader::FeedDownloader(QObject *parent)
|
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) {
|
m_feedsUpdating(0), m_feedsTotalCount(0), m_stopUpdate(false) {
|
||||||
qRegisterMetaType<FeedDownloadResults>("FeedDownloadResults");
|
qRegisterMetaType<FeedDownloadResults>("FeedDownloadResults");
|
||||||
|
|
||||||
|
m_threadPool->setMaxThreadCount(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
FeedDownloader::~FeedDownloader() {
|
FeedDownloader::~FeedDownloader() {
|
||||||
@ -80,7 +82,7 @@ void FeedDownloader::updateFeeds(const QList<Feed*> &feeds) {
|
|||||||
|
|
||||||
connect(feeds.at(i), &Feed::messagesObtained, this, &FeedDownloader::oneFeedUpdateFinished,
|
connect(feeds.at(i), &Feed::messagesObtained, this, &FeedDownloader::oneFeedUpdateFinished,
|
||||||
(Qt::ConnectionType) (Qt::UniqueConnection | Qt::AutoConnection));
|
(Qt::ConnectionType) (Qt::UniqueConnection | Qt::AutoConnection));
|
||||||
QThreadPool::globalInstance()->start(feeds.at(i));
|
m_threadPool->start(feeds.at(i));
|
||||||
|
|
||||||
m_feedsUpdating++;
|
m_feedsUpdating++;
|
||||||
m_feedsToUpdate--;
|
m_feedsToUpdate--;
|
||||||
@ -88,6 +90,9 @@ void FeedDownloader::updateFeeds(const QList<Feed*> &feeds) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FeedDownloader::stopRunningUpdate() {
|
void FeedDownloader::stopRunningUpdate() {
|
||||||
|
m_threadPool->clear();
|
||||||
|
|
||||||
|
// We want indicate that no more feeds will be updated in this queue.
|
||||||
m_stopUpdate = true;
|
m_stopUpdate = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
|
|
||||||
class Feed;
|
class Feed;
|
||||||
|
class QThreadPool;
|
||||||
|
|
||||||
// Represents results of batch feed updates.
|
// Represents results of batch feed updates.
|
||||||
class FeedDownloadResults {
|
class FeedDownloadResults {
|
||||||
@ -88,6 +89,7 @@ class FeedDownloader : public QObject {
|
|||||||
private:
|
private:
|
||||||
void finalizeUpdate();
|
void finalizeUpdate();
|
||||||
|
|
||||||
|
QThreadPool *m_threadPool;
|
||||||
FeedDownloadResults m_results;
|
FeedDownloadResults m_results;
|
||||||
|
|
||||||
int m_feedsUpdated;
|
int m_feedsUpdated;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user