Changeset View
Changeset View
Standalone View
Standalone View
src/core-impl/collections/db/sql/SqlCollection.cpp
Show First 20 Lines • Show All 215 Lines • ▼ Show 20 Line(s) | |||||
216 | }; | 216 | }; | ||
217 | 217 | | |||
218 | } //namespace Collections | 218 | } //namespace Collections | ||
219 | 219 | | |||
220 | using namespace Collections; | 220 | using namespace Collections; | ||
221 | 221 | | |||
222 | SqlCollection::SqlCollection( QSharedPointer<SqlStorage> storage ) | 222 | SqlCollection::SqlCollection( QSharedPointer<SqlStorage> storage ) | ||
223 | : DatabaseCollection() | 223 | : DatabaseCollection() | ||
224 | , m_registry( 0 ) | 224 | , m_registry( nullptr ) | ||
225 | , m_sqlStorage( storage ) | 225 | , m_sqlStorage( storage ) | ||
226 | , m_scanProcessor( 0 ) | 226 | , m_scanProcessor( nullptr ) | ||
227 | , m_directoryWatcher( 0 ) | 227 | , m_directoryWatcher( nullptr ) | ||
228 | , m_collectionLocationFactory( 0 ) | 228 | , m_collectionLocationFactory( nullptr ) | ||
229 | , m_queryMakerFactory( 0 ) | 229 | , m_queryMakerFactory( nullptr ) | ||
230 | { | 230 | { | ||
231 | qRegisterMetaType<TrackUrls>( "TrackUrls" ); | 231 | qRegisterMetaType<TrackUrls>( "TrackUrls" ); | ||
232 | qRegisterMetaType<ChangedTrackUrls>( "ChangedTrackUrls" ); | 232 | qRegisterMetaType<ChangedTrackUrls>( "ChangedTrackUrls" ); | ||
233 | 233 | | |||
234 | // update database to current schema version; this must be run *before* MountPointManager | 234 | // update database to current schema version; this must be run *before* MountPointManager | ||
235 | // is initialized or its handlers may try to insert | 235 | // is initialized or its handlers may try to insert | ||
236 | // into the database before it's created/updated! | 236 | // into the database before it's created/updated! | ||
237 | DatabaseUpdater updater( this ); | 237 | DatabaseUpdater updater( this ); | ||
Show All 27 Lines | |||||
265 | m_registry = new SqlRegistry( this ); | 265 | m_registry = new SqlRegistry( this ); | ||
266 | 266 | | |||
267 | m_collectionLocationFactory = new SqlCollectionLocationFactoryImpl( this ); | 267 | m_collectionLocationFactory = new SqlCollectionLocationFactoryImpl( this ); | ||
268 | m_queryMakerFactory = new DefaultSqlQueryMakerFactory( this ); | 268 | m_queryMakerFactory = new DefaultSqlQueryMakerFactory( this ); | ||
269 | 269 | | |||
270 | // scanning | 270 | // scanning | ||
271 | m_scanManager = new SqlScanManager( this, this ); | 271 | m_scanManager = new SqlScanManager( this, this ); | ||
272 | m_scanProcessor = new SqlScanResultProcessor( m_scanManager, this, this ); | 272 | m_scanProcessor = new SqlScanResultProcessor( m_scanManager, this, this ); | ||
273 | m_directoryWatcher = new SqlDirectoryWatcher( this ); | 273 | auto directoryWatcher = QSharedPointer<SqlDirectoryWatcher>::create( this ); | ||
274 | connect( m_directoryWatcher, &AbstractDirectoryWatcher::done, | 274 | m_directoryWatcher = directoryWatcher.toWeakRef(); | ||
275 | m_directoryWatcher, &AbstractDirectoryWatcher::deleteLater ); // auto delete | 275 | connect( directoryWatcher.data(), &AbstractDirectoryWatcher::done, | ||
276 | connect( m_directoryWatcher, &AbstractDirectoryWatcher::requestScan, | 276 | directoryWatcher.data(), &AbstractDirectoryWatcher::deleteLater ); // auto delete | ||
277 | connect( directoryWatcher.data(), &AbstractDirectoryWatcher::requestScan, | ||||
277 | m_scanManager, &GenericScanManager::requestScan ); | 278 | m_scanManager, &GenericScanManager::requestScan ); | ||
278 | ThreadWeaver::Queue::instance()->enqueue( QSharedPointer<ThreadWeaver::Job>(m_directoryWatcher) ); | 279 | ThreadWeaver::Queue::instance()->enqueue( directoryWatcher ); | ||
279 | } | 280 | } | ||
280 | 281 | | |||
281 | SqlCollection::~SqlCollection() | 282 | SqlCollection::~SqlCollection() | ||
282 | { | 283 | { | ||
283 | DEBUG_BLOCK | 284 | DEBUG_BLOCK | ||
284 | 285 | | |||
285 | m_directoryWatcher->abort(); | 286 | if( auto directoryWatcher = m_directoryWatcher.toStrongRef() ) | ||
287 | directoryWatcher->requestAbort(); | ||||
288 | | ||||
286 | delete m_scanProcessor; // this prevents any further commits from the scanner | 289 | delete m_scanProcessor; // this prevents any further commits from the scanner | ||
287 | delete m_collectionLocationFactory; | 290 | delete m_collectionLocationFactory; | ||
288 | delete m_queryMakerFactory; | 291 | delete m_queryMakerFactory; | ||
289 | delete m_registry; | 292 | delete m_registry; | ||
290 | } | 293 | } | ||
291 | 294 | | |||
292 | QString | 295 | QString | ||
293 | SqlCollection::uidUrlProtocol() const | 296 | SqlCollection::uidUrlProtocol() const | ||
▲ Show 20 Lines • Show All 182 Lines • Show Last 20 Lines |