postProcessRename(path);
}
-
- qCInfo(lcDisco) << "Discovered" << item->_file << item->_instruction << item->_direction << item->isDirectory();
- if (item->isDirectory()) {
- auto job = new ProcessDirectoryJob(item, _queryServer,
- item->_instruction == CSYNC_INSTRUCTION_RENAME ? NormalQuery : ParentDontExist,
- _discoveryData, this);
- job->_currentFolder = path;
- connect(job, &ProcessDirectoryJob::finished, this, &ProcessDirectoryJob::subJobFinished);
- _queuedJobs.push_back(job);
- } else {
- emit _discoveryData->itemDiscovered(item);
- }
+ processFileFinalize(item, path, item->isDirectory(), item->_instruction == CSYNC_INSTRUCTION_RENAME ? NormalQuery : ParentDontExist, _queryServer);
_pendingAsyncJobs--;
progress();
});
processRename(path);
recurseQueryServer = *etag == base._etag ? ParentNotChanged : NormalQuery;
}
-
- qCInfo(lcDisco) << "Discovered" << item->_file << item->_instruction << item->_direction << item->isDirectory();
- bool recurse = checkPermissions(item);
- if (recurse && item->isDirectory()) {
- auto job = new ProcessDirectoryJob(item, recurseQueryServer, NormalQuery, _discoveryData, this);
- job->_currentFolder = path;
- connect(job, &ProcessDirectoryJob::finished, this, &ProcessDirectoryJob::subJobFinished);
- _queuedJobs.push_back(job);
- } else {
- emit _discoveryData->itemDiscovered(item);
- }
+ processFileFinalize(item, path, item->isDirectory(), NormalQuery, recurseQueryServer);
_pendingAsyncJobs--;
progress();
});
}
}
+ bool recurse = item->isDirectory() || localEntry.isDirectory || serverEntry.isDirectory;
+ if (_queryLocal != NormalQuery && _queryServer != NormalQuery && !item->_isRestoration)
+ recurse = false;
+
+ auto recurseQueryLocal = _queryLocal == ParentNotChanged ? ParentNotChanged : localEntry.isDirectory || item->_instruction == CSYNC_INSTRUCTION_RENAME ? NormalQuery : ParentDontExist;
+ processFileFinalize(item, path, recurse, recurseQueryLocal, recurseQueryServer);
+}
+
+void ProcessDirectoryJob::processFileFinalize(
+ const SyncFileItemPtr &item, PathTuple path, bool recurse,
+ QueryMode recurseQueryLocal, QueryMode recurseQueryServer)
+{
if (path._original != path._target && (item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA || item->_instruction == CSYNC_INSTRUCTION_NONE)) {
ASSERT(_dirItem && _dirItem->_instruction == CSYNC_INSTRUCTION_RENAME);
// This is because otherwise subitems are not updated! (ideally renaming a directory could
if (item->isDirectory() && item->_instruction == CSYNC_INSTRUCTION_SYNC)
item->_instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
-
-
- bool recurse = item->isDirectory() || localEntry.isDirectory || serverEntry.isDirectory;
if (!checkPermissions(item))
recurse = false;
- if (_queryLocal != NormalQuery && _queryServer != NormalQuery && !item->_isRestoration)
- recurse = false;
if (recurse) {
- auto job = new ProcessDirectoryJob(item, recurseQueryServer,
- _queryLocal == ParentNotChanged ? ParentNotChanged : localEntry.isDirectory || item->_instruction == CSYNC_INSTRUCTION_RENAME ? NormalQuery : ParentDontExist,
- _discoveryData, this);
+ auto job = new ProcessDirectoryJob(item, recurseQueryLocal, recurseQueryServer, _discoveryData, this);
job->_currentFolder = path;
if (item->_instruction == CSYNC_INSTRUCTION_REMOVE) {
job->setParent(_discoveryData);
qCInfo(lcDisco) << "Discovered (blacklisted) " << item->_file << item->_instruction << item->_direction << item->isDirectory();
if (item->isDirectory() && item->_instruction != CSYNC_INSTRUCTION_IGNORE) {
- auto job = new ProcessDirectoryJob(item, InBlackList, NormalQuery, _discoveryData, this);
+ auto job = new ProcessDirectoryJob(item, NormalQuery, InBlackList, _discoveryData, this);
job->_currentFolder = path;
connect(job, &ProcessDirectoryJob::finished, this, &ProcessDirectoryJob::subJobFinished);
_queuedJobs.push_back(job);
InBlackList // Do not query this folder because it is in th blacklist (remote entries only)
};
Q_ENUM(QueryMode)
- explicit ProcessDirectoryJob(const SyncFileItemPtr &dirItem, QueryMode queryServer, QueryMode queryLocal,
+ explicit ProcessDirectoryJob(const SyncFileItemPtr &dirItem, QueryMode queryLocal, QueryMode queryServer,
DiscoveryPhase *data, QObject *parent)
: QObject(parent)
, _dirItem(dirItem)
void processFile(PathTuple, const LocalInfo &, const RemoteInfo &, const SyncJournalFileRecord &);
void processFileAnalyzeRemoteInfo(const SyncFileItemPtr &item, PathTuple, const LocalInfo &, const RemoteInfo &, const SyncJournalFileRecord &);
void processFileAnalyzeLocalInfo(const SyncFileItemPtr &item, PathTuple, const LocalInfo &, const RemoteInfo &, const SyncJournalFileRecord &, QueryMode recurseQueryServer);
+ void processFileFinalize(const SyncFileItemPtr &item, PathTuple, bool recurse, QueryMode recurseQueryLocal, QueryMode recurseQueryServer);
// Return false if there is an error and that a directory must not be recursively be taken