diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 67e228c15..9bba45c82 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -2079,6 +2079,12 @@ void Session::bottomTorrentsPriority(const QStringList &hashes) saveTorrentsQueue(); } +void Session::handleTorrentSaveResumeDataRequested(TorrentHandle *const torrent) +{ + qDebug("Saving resume data is requested for torrent '%s'...", qUtf8Printable(torrent->name())); + ++m_numResumeData; +} + QHash Session::torrents() const { return m_torrents; @@ -2390,7 +2396,7 @@ void Session::generateResumeData(bool final) || torrent->hasMissingFiles()) continue; - saveTorrentResumeData(torrent); + torrent->saveResumeData(); } } @@ -3603,55 +3609,48 @@ void Session::updateSeedingLimitTimer() void Session::handleTorrentShareLimitChanged(TorrentHandle *const torrent) { - saveTorrentResumeData(torrent); - updateSeedingLimitTimer(); -} - -void Session::saveTorrentResumeData(TorrentHandle *const torrent) -{ - qDebug("Saving fastresume data for %s", qUtf8Printable(torrent->name())); torrent->saveResumeData(); - ++m_numResumeData; + updateSeedingLimitTimer(); } void Session::handleTorrentNameChanged(TorrentHandle *const torrent) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); } void Session::handleTorrentSavePathChanged(TorrentHandle *const torrent) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentSavePathChanged(torrent); } void Session::handleTorrentCategoryChanged(TorrentHandle *const torrent, const QString &oldCategory) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentCategoryChanged(torrent, oldCategory); } void Session::handleTorrentTagAdded(TorrentHandle *const torrent, const QString &tag) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentTagAdded(torrent, tag); } void Session::handleTorrentTagRemoved(TorrentHandle *const torrent, const QString &tag) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentTagRemoved(torrent, tag); } void Session::handleTorrentSavingModeChanged(TorrentHandle *const torrent) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentSavingModeChanged(torrent); } void Session::handleTorrentTrackersAdded(TorrentHandle *const torrent, const QList &newTrackers) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); for (const TrackerEntry &newTracker : newTrackers) LogMsg(tr("Tracker '%1' was added to torrent '%2'").arg(newTracker.url(), torrent->name())); @@ -3663,7 +3662,7 @@ void Session::handleTorrentTrackersAdded(TorrentHandle *const torrent, const QLi void Session::handleTorrentTrackersRemoved(TorrentHandle *const torrent, const QList &deletedTrackers) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); for (const TrackerEntry &deletedTracker : deletedTrackers) LogMsg(tr("Tracker '%1' was deleted from torrent '%2'").arg(deletedTracker.url(), torrent->name())); @@ -3675,27 +3674,27 @@ void Session::handleTorrentTrackersRemoved(TorrentHandle *const torrent, const Q void Session::handleTorrentTrackersChanged(TorrentHandle *const torrent) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit trackersChanged(torrent); } void Session::handleTorrentUrlSeedsAdded(TorrentHandle *const torrent, const QList &newUrlSeeds) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); for (const QUrl &newUrlSeed : newUrlSeeds) LogMsg(tr("URL seed '%1' was added to torrent '%2'").arg(newUrlSeed.toString(), torrent->name())); } void Session::handleTorrentUrlSeedsRemoved(TorrentHandle *const torrent, const QList &urlSeeds) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); for (const QUrl &urlSeed : urlSeeds) LogMsg(tr("URL seed '%1' was removed from torrent '%2'").arg(urlSeed.toString(), torrent->name())); } void Session::handleTorrentMetadataReceived(TorrentHandle *const torrent) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); // Save metadata const QDir resumeDataDir(m_resumeFolderPath); @@ -3712,13 +3711,13 @@ void Session::handleTorrentMetadataReceived(TorrentHandle *const torrent) void Session::handleTorrentPaused(TorrentHandle *const torrent) { if (!torrent->hasError() && !torrent->hasMissingFiles()) - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentPaused(torrent); } void Session::handleTorrentResumed(TorrentHandle *const torrent) { - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentResumed(torrent); } @@ -3730,7 +3729,7 @@ void Session::handleTorrentChecked(TorrentHandle *const torrent) void Session::handleTorrentFinished(TorrentHandle *const torrent) { if (!torrent->hasError() && !torrent->hasMissingFiles()) - saveTorrentResumeData(torrent); + torrent->saveResumeData(); emit torrentFinished(torrent); qDebug("Checking if the torrent contains torrent files to download"); @@ -4269,7 +4268,7 @@ void Session::createTorrentHandle(const libt::torrent_handle &nativeHandle) // In case of crash before the scheduled generation // of the fastresumes. - saveTorrentResumeData(torrent); + torrent->saveResumeData(); } if (((torrent->ratioLimit() >= 0) || (torrent->seedingTimeLimit() >= 0)) diff --git a/src/base/bittorrent/session.h b/src/base/bittorrent/session.h index 8888c73fb..f34450809 100644 --- a/src/base/bittorrent/session.h +++ b/src/base/bittorrent/session.h @@ -482,6 +482,7 @@ namespace BitTorrent void bottomTorrentsPriority(const QStringList &hashes); // TorrentHandle interface + void handleTorrentSaveResumeDataRequested(TorrentHandle *const torrent); void handleTorrentShareLimitChanged(TorrentHandle *const torrent); void handleTorrentNameChanged(TorrentHandle *const torrent); void handleTorrentSavePathChanged(TorrentHandle *const torrent); @@ -608,7 +609,6 @@ namespace BitTorrent void updateSeedingLimitTimer(); void exportTorrentFile(TorrentHandle *const torrent, TorrentExportFolder folder = TorrentExportFolder::Regular); - void saveTorrentResumeData(TorrentHandle *const torrent); void handleAlert(libtorrent::alert *a); void dispatchTorrentAlert(libtorrent::alert *a); diff --git a/src/base/bittorrent/torrenthandle.cpp b/src/base/bittorrent/torrenthandle.cpp index 47a140578..22bb24811 100644 --- a/src/base/bittorrent/torrenthandle.cpp +++ b/src/base/bittorrent/torrenthandle.cpp @@ -508,6 +508,7 @@ bool TorrentHandle::needSaveResumeData() const void TorrentHandle::saveResumeData() { m_nativeHandle.save_resume_data(); + m_session->handleTorrentSaveResumeDataRequested(this); } int TorrentHandle::filesCount() const