void Folder::slotNetworkUnavailable() { _syncResult.setStatus(SyncResult::Unavailable); emit syncStateChange(); }
void ownCloudFolder::slotCSyncStarted() { qDebug() << " * csync thread started"; _syncResult.setStatus(SyncResult::SyncRunning); emit syncStateChange(); }
void Folder::slotSyncFinished() { qDebug() << " - client version" << qPrintable(Theme::instance()->version()) << " Qt" << qVersion() #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) << " SSL " << QSslSocket::sslLibraryVersionString().toUtf8().data() #endif ; if( _csyncError ) { qDebug() << "-> SyncEngine finished with ERROR, warn count is" << _syncResult.warnCount(); } else { qDebug() << "-> SyncEngine finished without problem."; } bubbleUpSyncResult(); bool anotherSyncNeeded = false; if (_engine) { anotherSyncNeeded = _engine->isAnotherSyncNeeded(); _engine.reset(0); } // _watcher->setEventsEnabledDelayed(2000); // This is for sync state calculation _stateLastSyncItemsWithError = _stateLastSyncItemsWithErrorNew; _stateLastSyncItemsWithErrorNew.clear(); _stateTaintedFolders.clear(); // heuristic: assume the sync had been done, new file watches needed to taint dirs if (_csyncError) { _syncResult.setStatus(SyncResult::Error); qDebug() << " ** error Strings: " << _errors; _syncResult.setErrorStrings( _errors ); qDebug() << " * owncloud csync thread finished with error"; } else if (_csyncUnavail) { _syncResult.setStatus(SyncResult::Error); qDebug() << " ** csync not available."; } else if( _syncResult.warnCount() > 0 ) { // there have been warnings on the way. _syncResult.setStatus(SyncResult::Problem); } else { _syncResult.setStatus(SyncResult::Success); } // Count the number of syncs that have failed in a row. if (_syncResult.status() == SyncResult::Success || _syncResult.status() == SyncResult::Problem) { _consecutiveFailingSyncs = 0; } else { _consecutiveFailingSyncs++; qDebug() << "the last" << _consecutiveFailingSyncs << "syncs failed"; } if (_syncResult.status() == SyncResult::Success) { // Clear the white list as all the folders that should be on that list are sync-ed journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, QStringList()); } emit syncStateChange(); // The syncFinished result that is to be triggered here makes the folderman // clear the current running sync folder marker. // Lets wait a bit to do that because, as long as this marker is not cleared, // file system change notifications are ignored for that folder. And it takes // some time under certain conditions to make the file system notifications // all come in. QTimer::singleShot(200, this, SLOT(slotEmitFinishedDelayed() )); _lastSyncDuration = _timeSinceLastSyncStart.elapsed(); _timeSinceLastSyncDone.restart(); // Increment the follow-up sync counter if necessary. if (anotherSyncNeeded) { _consecutiveFollowUpSyncs++; qDebug() << "another sync was requested by the finished sync, this has" << "happened" << _consecutiveFollowUpSyncs << "times"; } else { _consecutiveFollowUpSyncs = 0; } // Maybe force a follow-up sync to take place, but only a couple of times. if (anotherSyncNeeded && _consecutiveFollowUpSyncs <= 3) { _forceSyncOnPollTimeout = true; // We will make sure that the poll timer occurs soon enough. // delay 1s, 4s, 9s int c = _consecutiveFollowUpSyncs; QTimer::singleShot(c*c * 1000, this, SLOT(slotRunEtagJob() )); } }
void Folder::slotSyncStarted() { qDebug() << "#### Propagation start #################################################### >>"; _syncResult.setStatus(SyncResult::SyncRunning); emit syncStateChange(); }
void Folder::startSync(const QStringList &pathList) { Q_ASSERT(_accountState); Q_UNUSED(pathList) if (!_csync_ctx) { // no _csync_ctx yet, initialize it. init(); if (!_csync_ctx) { qDebug() << Q_FUNC_INFO << "init failed."; // the error should already be set QMetaObject::invokeMethod(this, "slotSyncFinished", Qt::QueuedConnection); return; } } else if (proxyDirty()) { setProxyDirty(false); } csync_set_log_level( Logger::instance()->isNoop() ? 0 : 11 ); if (isBusy()) { qCritical() << "* ERROR csync is still running and new sync requested."; return; } _errors.clear(); _csyncError = false; _csyncUnavail = false; _timeSinceLastSyncStart.restart(); _syncResult.clearErrors(); _syncResult.setStatus( SyncResult::SyncPrepare ); _syncResult.setSyncFileItemVector(SyncFileItemVector()); emit syncStateChange(); qDebug() << "*** Start syncing " << alias() << " - client version" << qPrintable(Theme::instance()->version()); if (! setIgnoredFiles()) { slotSyncError(tr("Could not read system exclude file")); QMetaObject::invokeMethod(this, "slotSyncFinished", Qt::QueuedConnection); return; } // pass the setting if hidden files are to be ignored, will be read in csync_update _csync_ctx->ignore_hidden_files = _definition.ignoreHiddenFiles; _engine.reset(new SyncEngine( _accountState->account(), _csync_ctx, path(), remoteUrl().path(), remotePath(), &_journal)); qRegisterMetaType<SyncFileItemVector>("SyncFileItemVector"); qRegisterMetaType<SyncFileItem::Direction>("SyncFileItem::Direction"); connect(_engine.data(), SIGNAL(rootEtag(QString)), this, SLOT(etagRetreivedFromSyncEngine(QString))); connect( _engine.data(), SIGNAL(treeWalkResult(const SyncFileItemVector&)), this, SLOT(slotThreadTreeWalkResult(const SyncFileItemVector&)), Qt::QueuedConnection); connect( _engine.data(), SIGNAL(aboutToPropagate(SyncFileItemVector&)), this, SLOT(slotAboutToPropagate(SyncFileItemVector&))); connect(_engine.data(), SIGNAL(started()), SLOT(slotSyncStarted()), Qt::QueuedConnection); connect(_engine.data(), SIGNAL(finished()), SLOT(slotSyncFinished()), Qt::QueuedConnection); connect(_engine.data(), SIGNAL(csyncError(QString)), SLOT(slotSyncError(QString)), Qt::QueuedConnection); connect(_engine.data(), SIGNAL(csyncUnavailable()), SLOT(slotCsyncUnavailable()), Qt::QueuedConnection); //direct connection so the message box is blocking the sync. connect(_engine.data(), SIGNAL(aboutToRemoveAllFiles(SyncFileItem::Direction,bool*)), SLOT(slotAboutToRemoveAllFiles(SyncFileItem::Direction,bool*))); connect(_engine.data(), SIGNAL(folderDiscovered(bool,QString)), this, SLOT(slotFolderDiscovered(bool,QString))); connect(_engine.data(), SIGNAL(transmissionProgress(ProgressInfo)), this, SLOT(slotTransmissionProgress(ProgressInfo))); connect(_engine.data(), SIGNAL(itemCompleted(const SyncFileItem &, const PropagatorJob &)), this, SLOT(slotItemCompleted(const SyncFileItem &, const PropagatorJob &))); connect(_engine.data(), SIGNAL(syncItemDiscovered(const SyncFileItem &)), this, SLOT(slotSyncItemDiscovered(const SyncFileItem &))); connect(_engine.data(), SIGNAL(newBigFolder(QString)), this, SLOT(slotNewBigFolderDiscovered(QString))); setDirtyNetworkLimits(); ConfigFile cfgFile; auto newFolderLimit = cfgFile.newBigFolderSizeLimit(); quint64 limit = newFolderLimit.first ? newFolderLimit.second * 1000 * 1000 : -1; // convert from MB to B _engine->setNewBigFolderSizeLimit(limit); QMetaObject::invokeMethod(_engine.data(), "startSync", Qt::QueuedConnection); // disable events until syncing is done // _watcher->setEventsEnabled(false); emit syncStarted(); }
void Folder::slotNetworkUnavailable() { AccountManager::instance()->account()->setState(Account::Disconnected); _syncResult.setStatus(SyncResult::Unavailable); emit syncStateChange(); }
void Folder::startSync( const QStringList &pathList ) { _syncResult.setStatus( SyncResult::SyncRunning ); emit syncStateChange(); }