Changeset View
Changeset View
Standalone View
Standalone View
src/file/fileindexscheduler.cpp
Show All 20 Lines | |||||
21 | 21 | | |||
22 | #include "firstrunindexer.h" | 22 | #include "firstrunindexer.h" | ||
23 | #include "newfileindexer.h" | 23 | #include "newfileindexer.h" | ||
24 | #include "modifiedfileindexer.h" | 24 | #include "modifiedfileindexer.h" | ||
25 | #include "xattrindexer.h" | 25 | #include "xattrindexer.h" | ||
26 | #include "filecontentindexer.h" | 26 | #include "filecontentindexer.h" | ||
27 | #include "filecontentindexerprovider.h" | 27 | #include "filecontentindexerprovider.h" | ||
28 | #include "unindexedfileindexer.h" | 28 | #include "unindexedfileindexer.h" | ||
29 | #include "indexcleaner.h" | ||||
29 | 30 | | |||
30 | #include "fileindexerconfig.h" | 31 | #include "fileindexerconfig.h" | ||
32 | #include "storagedevices.h" | ||||
31 | 33 | | |||
32 | #include <QTimer> | 34 | #include <QTimer> | ||
33 | #include <QDebug> | 35 | #include <QDebug> | ||
34 | #include <QDBusConnection> | 36 | #include <QDBusConnection> | ||
35 | 37 | | |||
36 | using namespace Baloo; | 38 | using namespace Baloo; | ||
37 | 39 | | |||
38 | FileIndexScheduler::FileIndexScheduler(Database* db, FileIndexerConfig* config, QObject* parent) | 40 | FileIndexScheduler::FileIndexScheduler(Database* db, FileIndexerConfig* config, QObject* parent) | ||
Show All 16 Lines | 49 | { | |||
55 | 57 | | |||
56 | m_contentIndexer = new FileContentIndexer(m_config, &m_provider, this); | 58 | m_contentIndexer = new FileContentIndexer(m_config, &m_provider, this); | ||
57 | m_contentIndexer->setAutoDelete(false); | 59 | m_contentIndexer->setAutoDelete(false); | ||
58 | connect(m_contentIndexer, &FileContentIndexer::done, this, | 60 | connect(m_contentIndexer, &FileContentIndexer::done, this, | ||
59 | &FileIndexScheduler::scheduleIndexing); | 61 | &FileIndexScheduler::scheduleIndexing); | ||
60 | connect(m_contentIndexer, &FileContentIndexer::newBatchTime, &m_timeEstimator, | 62 | connect(m_contentIndexer, &FileContentIndexer::newBatchTime, &m_timeEstimator, | ||
61 | &TimeEstimator::handleNewBatchTime); | 63 | &TimeEstimator::handleNewBatchTime); | ||
62 | 64 | | |||
65 | m_devices = new StorageDevices(this); | ||||
66 | | ||||
63 | QDBusConnection::sessionBus().registerObject(QStringLiteral("/scheduler"), | 67 | QDBusConnection::sessionBus().registerObject(QStringLiteral("/scheduler"), | ||
64 | this, QDBusConnection::ExportScriptableContents); | 68 | this, QDBusConnection::ExportScriptableContents); | ||
65 | } | 69 | } | ||
66 | 70 | | |||
67 | FileIndexScheduler::~FileIndexScheduler() | 71 | FileIndexScheduler::~FileIndexScheduler() | ||
68 | { | 72 | { | ||
69 | m_threadPool.waitForDone(0); // wait 0 msecs | 73 | m_threadPool.waitForDone(0); // wait 0 msecs | ||
70 | } | 74 | } | ||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Line(s) | 132 | if (m_checkUnindexedFiles) { | |||
130 | connect(runnable, &UnindexedFileIndexer::done, this, &FileIndexScheduler::scheduleIndexing); | 134 | connect(runnable, &UnindexedFileIndexer::done, this, &FileIndexScheduler::scheduleIndexing); | ||
131 | 135 | | |||
132 | m_threadPool.start(runnable); | 136 | m_threadPool.start(runnable); | ||
133 | m_checkUnindexedFiles = false; | 137 | m_checkUnindexedFiles = false; | ||
134 | m_indexerState = UnindexedFileCheck; | 138 | m_indexerState = UnindexedFileCheck; | ||
135 | Q_EMIT stateChanged(m_indexerState); | 139 | Q_EMIT stateChanged(m_indexerState); | ||
136 | return; | 140 | return; | ||
137 | } | 141 | } | ||
142 | | ||||
143 | if (m_purgeDeindexableFiles) { | ||||
michaelh: Same as above | |||||
144 | auto runnable = new IndexCleaner(m_db, m_config, m_devices); | ||||
145 | connect(runnable, &IndexCleaner::done, this, &FileIndexScheduler::scheduleIndexing); | ||||
146 | | ||||
147 | m_threadPool.start(runnable); | ||||
148 | m_purgeDeindexableFiles = false; | ||||
149 | m_indexerState = DeindexingFileCheck; | ||||
150 | Q_EMIT stateChanged(m_indexerState); | ||||
151 | return; | ||||
152 | } | ||||
153 | | ||||
138 | m_indexerState = Idle; | 154 | m_indexerState = Idle; | ||
139 | Q_EMIT stateChanged(m_indexerState); | 155 | Q_EMIT stateChanged(m_indexerState); | ||
140 | } | 156 | } | ||
141 | 157 | | |||
142 | static void removeStartsWith(QStringList& list, const QString& dir) | 158 | static void removeStartsWith(QStringList& list, const QString& dir) | ||
143 | { | 159 | { | ||
144 | QMutableListIterator<QString> it(list); | 160 | QMutableListIterator<QString> it(list); | ||
145 | while (it.hasNext()) { | 161 | while (it.hasNext()) { | ||
▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Line(s) | |||||
204 | } | 220 | } | ||
205 | 221 | | |||
206 | void FileIndexScheduler::checkUnindexedFiles() | 222 | void FileIndexScheduler::checkUnindexedFiles() | ||
207 | { | 223 | { | ||
208 | m_checkUnindexedFiles = true; | 224 | m_checkUnindexedFiles = true; | ||
209 | scheduleIndexing(); | 225 | scheduleIndexing(); | ||
210 | } | 226 | } | ||
211 | 227 | | |||
228 | void FileIndexScheduler::purgeDeindexableFiles() | ||||
michaelh: Same as above | |||||
229 | { | ||||
230 | m_purgeDeindexableFiles = true; | ||||
michaelh: Same as above | |||||
231 | scheduleIndexing(); | ||||
232 | } | ||||
233 | | ||||
212 | uint FileIndexScheduler::getBatchSize() | 234 | uint FileIndexScheduler::getBatchSize() | ||
213 | { | 235 | { | ||
214 | return m_config->maxUncomittedFiles(); | 236 | return m_config->maxUncomittedFiles(); | ||
215 | } | 237 | } |
Same as above