diff --git a/conf.pri.windows b/conf.pri.windows index 2d1110e8a..88cd406c3 100644 --- a/conf.pri.windows +++ b/conf.pri.windows @@ -45,6 +45,9 @@ DEFINES += BOOST_SYSTEM_STATIC_LINK # Enable if linking dynamically against libtorrent #DEFINES += TORRENT_LINKING_SHARED +# Enable this if compiling with libtorrent 2.x +#DEFINES += QBT_USES_LIBTORRENT2 + # Enable stack trace support CONFIG += stacktrace diff --git a/configure b/configure index 44110faa5..137d2adde 100755 --- a/configure +++ b/configure @@ -6279,7 +6279,7 @@ else libtorrent_LIBS=$pkg_cv_libtorrent_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS" + CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS" QBT_ADD_DEFINES="$QBT_ADD_DEFINES QBT_USES_LIBTORRENT2" fi diff --git a/configure.ac b/configure.ac index c8b97e9da..536d7d5eb 100644 --- a/configure.ac +++ b/configure.ac @@ -178,7 +178,7 @@ AC_COMPILE_IFELSE([DETECT_BOOST_VERSION_PROGRAM(106000)], [], PKG_CHECK_MODULES(libtorrent, [libtorrent-rasterbar >= 2.0.4], - [CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS"], + [CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS" QBT_ADD_DEFINES="$QBT_ADD_DEFINES QBT_USES_LIBTORRENT2"], [PKG_CHECK_MODULES(libtorrent, [libtorrent-rasterbar >= 1.2.14 libtorrent-rasterbar < 2], [CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS"])]) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d22c93a27..843b72fb9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -36,6 +36,7 @@ endmacro() find_libtorrent(${minLibtorrent1Version}) if (LibtorrentRasterbar_FOUND AND (LibtorrentRasterbar_VERSION VERSION_GREATER_EQUAL 2.0)) find_libtorrent(${minLibtorrentVersion}) + target_compile_definitions(qbt_common_cfg PUBLIC QBT_USES_LIBTORRENT2) endif() # force variable type so that it always shows up in ccmake/cmake-gui frontends diff --git a/src/base/bittorrent/customstorage.cpp b/src/base/bittorrent/customstorage.cpp index 2673ec43b..8c14edeb5 100644 --- a/src/base/bittorrent/customstorage.cpp +++ b/src/base/bittorrent/customstorage.cpp @@ -35,7 +35,7 @@ #include "base/utils/fs.h" #include "common.h" -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 #include std::unique_ptr customDiskIOConstructor( diff --git a/src/base/bittorrent/customstorage.h b/src/base/bittorrent/customstorage.h index fa727ce6a..41b9170c3 100644 --- a/src/base/bittorrent/customstorage.h +++ b/src/base/bittorrent/customstorage.h @@ -30,11 +30,10 @@ #include #include -#include #include -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 #include #include #include @@ -46,7 +45,7 @@ #include #endif -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 std::unique_ptr customDiskIOConstructor( lt::io_context &ioContext, lt::settings_interface const &settings, lt::counters &counters); diff --git a/src/base/bittorrent/infohash.cpp b/src/base/bittorrent/infohash.cpp index 6fef48148..907b05fe4 100644 --- a/src/base/bittorrent/infohash.cpp +++ b/src/base/bittorrent/infohash.cpp @@ -43,7 +43,7 @@ bool BitTorrent::InfoHash::isValid() const SHA1Hash BitTorrent::InfoHash::v1() const { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 return (m_nativeHash.has_v1() ? SHA1Hash(m_nativeHash.v1) : SHA1Hash()); #else return {m_nativeHash}; @@ -52,7 +52,7 @@ SHA1Hash BitTorrent::InfoHash::v1() const SHA256Hash BitTorrent::InfoHash::v2() const { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 return (m_nativeHash.has_v2() ? SHA256Hash(m_nativeHash.v2) : SHA256Hash()); #else return {}; @@ -61,7 +61,7 @@ SHA256Hash BitTorrent::InfoHash::v2() const BitTorrent::TorrentID BitTorrent::InfoHash::toTorrentID() const { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 return m_nativeHash.get_best(); #else return {m_nativeHash}; diff --git a/src/base/bittorrent/infohash.h b/src/base/bittorrent/infohash.h index c06844c23..31fd0ee55 100644 --- a/src/base/bittorrent/infohash.h +++ b/src/base/bittorrent/infohash.h @@ -28,8 +28,7 @@ #pragma once -#include -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 #include #endif @@ -58,7 +57,7 @@ namespace BitTorrent class InfoHash { public: -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 using WrappedType = lt::info_hash_t; #else using WrappedType = lt::sha1_hash; diff --git a/src/base/bittorrent/magneturi.cpp b/src/base/bittorrent/magneturi.cpp index 99e3023e3..133623545 100644 --- a/src/base/bittorrent/magneturi.cpp +++ b/src/base/bittorrent/magneturi.cpp @@ -90,7 +90,7 @@ MagnetUri::MagnetUri(const QString &source) m_valid = true; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 m_infoHash = m_addTorrentParams.info_hashes; #else m_infoHash = m_addTorrentParams.info_hash; diff --git a/src/base/bittorrent/nativesessionextension.h b/src/base/bittorrent/nativesessionextension.h index 209b7d715..ffe49b025 100644 --- a/src/base/bittorrent/nativesessionextension.h +++ b/src/base/bittorrent/nativesessionextension.h @@ -29,11 +29,10 @@ #pragma once #include -#include class NativeSessionExtension final : public lt::plugin { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 using ClientData = lt::client_data_t; #else using ClientData = void *; diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 4a7a39368..4773bd960 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -210,7 +210,7 @@ namespace { switch (socketType) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 case lt::socket_type_t::http: return QLatin1String("HTTP"); case lt::socket_type_t::http_ssl: @@ -220,7 +220,7 @@ namespace return QLatin1String("I2P"); case lt::socket_type_t::socks5: return QLatin1String("SOCKS5"); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 case lt::socket_type_t::socks5_ssl: return QLatin1String("SOCKS5_SSL"); #endif @@ -228,7 +228,7 @@ namespace return QLatin1String("TCP"); case lt::socket_type_t::tcp_ssl: return QLatin1String("TCP_SSL"); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 case lt::socket_type_t::utp: return QLatin1String("UTP"); #else @@ -1077,14 +1077,14 @@ void Session::initializeNativeSession() pack.set_bool(lt::settings_pack::enable_upnp, false); pack.set_bool(lt::settings_pack::enable_natpmp, false); -#if (LIBTORRENT_VERSION_NUM > 20000) +#ifdef QBT_USES_LIBTORRENT2 // preserve the same behavior as in earlier libtorrent versions pack.set_bool(lt::settings_pack::enable_set_file_valid_data, true); #endif loadLTSettings(pack); lt::session_params sessionParams {pack, {}}; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 sessionParams.disk_io_constructor = customDiskIOConstructor; #endif m_nativeSession = new lt::session {sessionParams}; @@ -1176,7 +1176,7 @@ void Session::initMetrics() m_metricIndices.disk.diskBlocksInUse = findMetricIndex("disk.disk_blocks_in_use"); m_metricIndices.disk.numBlocksRead = findMetricIndex("disk.num_blocks_read"); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 m_metricIndices.disk.numBlocksCacheHits = findMetricIndex("disk.num_blocks_cache_hits"); #endif m_metricIndices.disk.writeJobs = findMetricIndex("disk.num_write_ops"); @@ -1263,7 +1263,7 @@ void Session::loadLTSettings(lt::settings_pack &settingsPack) settingsPack.set_int(lt::settings_pack::peer_turnover_interval, peerTurnoverInterval()); settingsPack.set_int(lt::settings_pack::aio_threads, asyncIOThreads()); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 settingsPack.set_int(lt::settings_pack::hashing_threads, hashingThreads()); #endif settingsPack.set_int(lt::settings_pack::file_pool_size, filePoolSize()); @@ -1271,7 +1271,7 @@ void Session::loadLTSettings(lt::settings_pack &settingsPack) const int checkingMemUsageSize = checkingMemUsage() * 64; settingsPack.set_int(lt::settings_pack::checking_mem_usage, checkingMemUsageSize); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 const int cacheSize = (diskCacheSize() > -1) ? (diskCacheSize() * 64) : -1; settingsPack.set_int(lt::settings_pack::cache_size, cacheSize); settingsPack.set_int(lt::settings_pack::cache_expiry, diskCacheTTL()); @@ -1282,7 +1282,7 @@ void Session::loadLTSettings(lt::settings_pack &settingsPack) settingsPack.set_int(lt::settings_pack::disk_io_read_mode, mode); settingsPack.set_int(lt::settings_pack::disk_io_write_mode, mode); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 settingsPack.set_bool(lt::settings_pack::coalesce_reads, isCoalesceReadWriteEnabled()); settingsPack.set_bool(lt::settings_pack::coalesce_writes, isCoalesceReadWriteEnabled()); #endif @@ -2215,7 +2215,7 @@ bool Session::loadTorrent(LoadTorrentParams params) { lt::add_torrent_params &p = params.ltAddTorrentParams; -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 p.storage = customStorageConstructor; #endif // Limits @@ -2223,7 +2223,7 @@ bool Session::loadTorrent(LoadTorrentParams params) p.max_uploads = maxUploadsPerTorrent(); const bool hasMetadata = (p.ti && p.ti->is_valid()); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(hasMetadata ? p.ti->info_hashes() : p.info_hashes); #else const auto id = TorrentID::fromInfoHash(hasMetadata ? p.ti->info_hash() : p.info_hash); @@ -2290,7 +2290,7 @@ bool Session::downloadMetadata(const MagnetUri &magnetUri) // Solution to avoid accidental file writes p.flags |= lt::torrent_flags::upload_mode; -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 p.storage = customStorageConstructor; #endif @@ -3905,7 +3905,7 @@ void Session::handleTorrentMetadataReceived(TorrentImpl *const torrent) // Copy the torrent file to the export folder if (!torrentExportDirectory().isEmpty()) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const TorrentInfo torrentInfo {torrent->nativeHandle().torrent_file_with_hashes()}; #else const TorrentInfo torrentInfo {torrent->nativeHandle().torrent_file()}; @@ -3963,7 +3963,7 @@ void Session::handleTorrentFinished(TorrentImpl *const torrent) // Move .torrent file to another folder if (!finishedTorrentExportDirectory().isEmpty()) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const TorrentInfo torrentInfo {torrent->nativeHandle().torrent_file_with_hashes()}; #else const TorrentInfo torrentInfo {torrent->nativeHandle().torrent_file()}; @@ -4048,7 +4048,7 @@ bool Session::addMoveTorrentStorageJob(TorrentImpl *torrent, const QString &newP void Session::moveTorrentStorage(const MoveStorageJob &job) const { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(job.torrentHandle.info_hashes()); #else const auto id = TorrentID::fromInfoHash(job.torrentHandle.info_hash()); @@ -4347,7 +4347,7 @@ void Session::handleAlert(const lt::alert *a) { switch (a->type()) { -#if (LIBTORRENT_VERSION_NUM >= 20003) +#ifdef QBT_USES_LIBTORRENT2 case lt::file_prio_alert::alert_type: #endif case lt::file_renamed_alert::alert_type: @@ -4449,7 +4449,7 @@ void Session::dispatchTorrentAlert(const lt::alert *a) void Session::createTorrent(const lt::torrent_handle &nativeHandle) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto torrentID = TorrentID::fromInfoHash(nativeHandle.info_hashes()); #else const auto torrentID = TorrentID::fromInfoHash(nativeHandle.info_hash()); @@ -4515,7 +4515,7 @@ void Session::handleAddTorrentAlert(const lt::add_torrent_alert *p) const lt::add_torrent_params ¶ms = p->params; const bool hasMetadata = (params.ti && params.ti->is_valid()); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(hasMetadata ? params.ti->info_hashes() : params.info_hashes); #else const auto id = TorrentID::fromInfoHash(hasMetadata ? params.ti->info_hash() : params.info_hash); @@ -4530,7 +4530,7 @@ void Session::handleAddTorrentAlert(const lt::add_torrent_alert *p) void Session::handleTorrentRemovedAlert(const lt::torrent_removed_alert *p) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(p->info_hashes); #else const auto id = TorrentID::fromInfoHash(p->info_hash); @@ -4549,7 +4549,7 @@ void Session::handleTorrentRemovedAlert(const lt::torrent_removed_alert *p) void Session::handleTorrentDeletedAlert(const lt::torrent_deleted_alert *p) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(p->info_hashes); #else const auto id = TorrentID::fromInfoHash(p->info_hash); @@ -4567,7 +4567,7 @@ void Session::handleTorrentDeletedAlert(const lt::torrent_deleted_alert *p) void Session::handleTorrentDeleteFailedAlert(const lt::torrent_delete_failed_alert *p) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(p->info_hashes); #else const auto id = TorrentID::fromInfoHash(p->info_hash); @@ -4597,7 +4597,7 @@ void Session::handleTorrentDeleteFailedAlert(const lt::torrent_delete_failed_ale void Session::handleMetadataReceivedAlert(const lt::metadata_received_alert *p) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(p->handle.info_hashes()); #else const auto id = TorrentID::fromInfoHash(p->handle.info_hash()); @@ -4800,7 +4800,7 @@ void Session::handleSessionStatsAlert(const lt::session_stats_alert *p) m_cacheStatus.totalUsedBuffers = stats[m_metricIndices.disk.diskBlocksInUse]; m_cacheStatus.jobQueueLength = stats[m_metricIndices.disk.queuedDiskJobs]; -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 const int64_t numBlocksRead = stats[m_metricIndices.disk.numBlocksRead]; const int64_t numBlocksCacheHits = stats[m_metricIndices.disk.numBlocksCacheHits]; m_cacheStatus.readRatio = static_cast(numBlocksCacheHits) / std::max((numBlocksCacheHits + numBlocksRead), 1); @@ -4835,7 +4835,7 @@ void Session::handleStorageMovedAlert(const lt::storage_moved_alert *p) const QString newPath {p->storage_path()}; Q_ASSERT(newPath == currentJob.path); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(currentJob.torrentHandle.info_hashes()); #else const auto id = TorrentID::fromInfoHash(currentJob.torrentHandle.info_hash()); @@ -4855,7 +4855,7 @@ void Session::handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert const MoveStorageJob ¤tJob = m_moveStorageQueue.first(); Q_ASSERT(currentJob.torrentHandle == p->handle); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(currentJob.torrentHandle.info_hashes()); #else const auto id = TorrentID::fromInfoHash(currentJob.torrentHandle.info_hash()); @@ -4878,7 +4878,7 @@ void Session::handleStateUpdateAlert(const lt::state_update_alert *p) for (const lt::torrent_status &status : p->status) { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(status.info_hashes); #else const auto id = TorrentID::fromInfoHash(status.info_hash); diff --git a/src/base/bittorrent/session.h b/src/base/bittorrent/session.h index 448d1142f..6bb927f8a 100644 --- a/src/base/bittorrent/session.h +++ b/src/base/bittorrent/session.h @@ -36,7 +36,6 @@ #include #include #include -#include #include #include @@ -191,7 +190,7 @@ namespace BitTorrent { int diskBlocksInUse = -1; int numBlocksRead = -1; -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 int numBlocksCacheHits = -1; #endif int writeJobs = -1; diff --git a/src/base/bittorrent/torrentcreatorthread.cpp b/src/base/bittorrent/torrentcreatorthread.cpp index 74e8ee29e..851f67966 100644 --- a/src/base/bittorrent/torrentcreatorthread.cpp +++ b/src/base/bittorrent/torrentcreatorthread.cpp @@ -57,7 +57,7 @@ namespace return !Utils::Fs::fileName(QString::fromStdString(f)).startsWith('.'); } -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 lt::create_flags_t toNativeTorrentFormatFlag(const BitTorrent::TorrentFormat torrentFormat) { switch (torrentFormat) @@ -159,7 +159,7 @@ void TorrentCreatorThread::run() checkInterruptionRequested(); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 lt::create_torrent newTorrent {fs, m_params.pieceSize, toNativeTorrentFormatFlag(m_params.torrentFormat)}; #else lt::create_torrent newTorrent(fs, m_params.pieceSize, m_params.paddedFileSizeLimit @@ -233,7 +233,7 @@ void TorrentCreatorThread::run() } } -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 int TorrentCreatorThread::calculateTotalPieces(const QString &inputPath, const int pieceSize, const TorrentFormat torrentFormat) #else int TorrentCreatorThread::calculateTotalPieces(const QString &inputPath, const int pieceSize, const bool isAlignmentOptimized, const int paddedFileSizeLimit) @@ -245,7 +245,7 @@ int TorrentCreatorThread::calculateTotalPieces(const QString &inputPath, const i lt::file_storage fs; lt::add_files(fs, Utils::Fs::toNativePath(inputPath).toStdString(), fileFilter); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 return lt::create_torrent {fs, pieceSize, toNativeTorrentFormatFlag(torrentFormat)}.num_pieces(); #else return lt::create_torrent(fs, pieceSize, paddedFileSizeLimit diff --git a/src/base/bittorrent/torrentcreatorthread.h b/src/base/bittorrent/torrentcreatorthread.h index e4280ba97..4b77c53a5 100644 --- a/src/base/bittorrent/torrentcreatorthread.h +++ b/src/base/bittorrent/torrentcreatorthread.h @@ -28,14 +28,12 @@ #pragma once -#include - #include #include namespace BitTorrent { -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 enum class TorrentFormat { V1, @@ -47,7 +45,7 @@ namespace BitTorrent struct TorrentCreatorParams { bool isPrivate; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 TorrentFormat torrentFormat; #else bool isAlignmentOptimized; @@ -73,7 +71,7 @@ namespace BitTorrent void create(const TorrentCreatorParams ¶ms); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 static int calculateTotalPieces(const QString &inputPath, const int pieceSize, const TorrentFormat torrentFormat); #else static int calculateTotalPieces(const QString &inputPath diff --git a/src/base/bittorrent/torrentimpl.cpp b/src/base/bittorrent/torrentimpl.cpp index d36fe9b3d..fadb4c13e 100644 --- a/src/base/bittorrent/torrentimpl.cpp +++ b/src/base/bittorrent/torrentimpl.cpp @@ -43,9 +43,8 @@ #include #include #include -#include -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 #include #endif @@ -96,7 +95,7 @@ namespace return entry; } -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 TrackerEntry fromNativeAnnouncerEntry(const lt::announce_entry &nativeEntry , const lt::info_hash_t &hashes, const QMap &trackerPeerCounts) #else @@ -111,7 +110,7 @@ namespace int numNotWorking = 0; QString firstTrackerMessage; QString firstErrorMessage; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const auto numEndpoints = static_cast(nativeEntry.endpoints.size() * ((hashes.has_v1() && hashes.has_v2()) ? 2 : 1)); trackerEntry.endpoints.reserve(static_cast(numEndpoints)); for (const lt::announce_endpoint &endpoint : nativeEntry.endpoints) @@ -265,7 +264,7 @@ TorrentImpl::TorrentImpl(Session *session, lt::session *nativeSession , m_session(session) , m_nativeSession(nativeSession) , m_nativeHandle(nativeHandle) -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 , m_infoHash(m_nativeHandle.info_hashes()) #else , m_infoHash(m_nativeHandle.info_hash()) @@ -478,7 +477,7 @@ QVector TorrentImpl::trackers() const for (const lt::announce_entry &tracker : nativeTrackers) { const QString trackerURL = QString::fromStdString(tracker.url); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 entries << fromNativeAnnouncerEntry(tracker, m_nativeHandle.info_hashes(), m_trackerPeerCounts[trackerURL]); #else entries << fromNativeAnnouncerEntry(tracker, m_trackerPeerCounts[trackerURL]); @@ -1942,7 +1941,7 @@ void TorrentImpl::handleFileErrorAlert(const lt::file_error_alert *p) m_lastFileError = {p->error, p->op}; } -#if (LIBTORRENT_VERSION_NUM >= 20003) +#ifdef QBT_USES_LIBTORRENT2 void TorrentImpl::handleFilePrioAlert(const lt::file_prio_alert *) { if (m_nativeHandle.need_save_resume_data()) @@ -1987,7 +1986,7 @@ void TorrentImpl::handleAlert(const lt::alert *a) { switch (a->type()) { -#if (LIBTORRENT_VERSION_NUM >= 20003) +#ifdef QBT_USES_LIBTORRENT2 case lt::file_prio_alert::alert_type: handleFilePrioAlert(static_cast(a)); break; diff --git a/src/base/bittorrent/torrentimpl.h b/src/base/bittorrent/torrentimpl.h index f891b3133..e29eeb3ce 100644 --- a/src/base/bittorrent/torrentimpl.h +++ b/src/base/bittorrent/torrentimpl.h @@ -252,7 +252,7 @@ namespace BitTorrent void handleFastResumeRejectedAlert(const lt::fastresume_rejected_alert *p); void handleFileCompletedAlert(const lt::file_completed_alert *p); void handleFileErrorAlert(const lt::file_error_alert *p); -#if (LIBTORRENT_VERSION_NUM >= 20003) +#ifdef QBT_USES_LIBTORRENT2 void handleFilePrioAlert(const lt::file_prio_alert *p); #endif void handleFileRenamedAlert(const lt::file_renamed_alert *p); diff --git a/src/base/bittorrent/torrentinfo.cpp b/src/base/bittorrent/torrentinfo.cpp index e1805026f..c8a6e118c 100644 --- a/src/base/bittorrent/torrentinfo.cpp +++ b/src/base/bittorrent/torrentinfo.cpp @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -197,7 +196,7 @@ InfoHash TorrentInfo::infoHash() const { if (!isValid()) return {}; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 return m_nativeInfo->info_hashes(); #else return m_nativeInfo->info_hash(); @@ -342,7 +341,7 @@ QVector TorrentInfo::urlSeeds() const QByteArray TorrentInfo::metadata() const { if (!isValid()) return {}; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const lt::span infoSection {m_nativeInfo->info_section()}; return {infoSection.data(), static_cast(infoSection.size())}; #else diff --git a/src/gui/advancedsettings.cpp b/src/gui/advancedsettings.cpp index 3465880bc..0b160a3c7 100644 --- a/src/gui/advancedsettings.cpp +++ b/src/gui/advancedsettings.cpp @@ -96,18 +96,18 @@ namespace // libtorrent section LIBTORRENT_HEADER, ASYNC_IO_THREADS, -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 HASHING_THREADS, #endif FILE_POOL_SIZE, CHECKING_MEM_USAGE, -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 // cache DISK_CACHE, DISK_CACHE_TTL, #endif OS_CACHE, -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 COALESCE_RW, #endif PIECE_EXTENT_AFFINITY, @@ -199,7 +199,7 @@ void AdvancedSettings::saveAdvancedSettings() #endif // Async IO threads session->setAsyncIOThreads(m_spinBoxAsyncIOThreads.value()); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 // Hashing threads session->setHashingThreads(m_spinBoxHashingThreads.value()); #endif @@ -207,14 +207,14 @@ void AdvancedSettings::saveAdvancedSettings() session->setFilePoolSize(m_spinBoxFilePoolSize.value()); // Checking Memory Usage session->setCheckingMemUsage(m_spinBoxCheckingMemUsage.value()); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 // Disk write cache session->setDiskCacheSize(m_spinBoxCache.value()); session->setDiskCacheTTL(m_spinBoxCacheTTL.value()); #endif // Enable OS cache session->setUseOSCache(m_checkBoxOsCache.isChecked()); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 // Coalesce reads & writes session->setCoalesceReadWriteEnabled(m_checkBoxCoalesceRW.isChecked()); #endif @@ -321,7 +321,7 @@ void AdvancedSettings::saveAdvancedSettings() session->setPeerTurnoverInterval(m_spinBoxPeerTurnoverInterval.value()); } -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 void AdvancedSettings::updateCacheSpinSuffix(int value) { if (value == 0) @@ -445,7 +445,7 @@ void AdvancedSettings::loadAdvancedSettings() addRow(ASYNC_IO_THREADS, (tr("Asynchronous I/O threads") + ' ' + makeLink("https://www.libtorrent.org/reference-Settings.html#aio_threads", "(?)")) , &m_spinBoxAsyncIOThreads); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 // Hashing threads m_spinBoxHashingThreads.setMinimum(1); m_spinBoxHashingThreads.setMaximum(1024); @@ -474,7 +474,7 @@ void AdvancedSettings::loadAdvancedSettings() m_spinBoxCheckingMemUsage.setSuffix(tr(" MiB")); addRow(CHECKING_MEM_USAGE, (tr("Outstanding memory when checking torrents") + ' ' + makeLink("https://www.libtorrent.org/reference-Settings.html#checking_mem_usage", "(?)")) , &m_spinBoxCheckingMemUsage); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 // Disk write cache m_spinBoxCache.setMinimum(-1); // When build as 32bit binary, set the maximum at less than 2GB to prevent crashes. @@ -502,7 +502,7 @@ void AdvancedSettings::loadAdvancedSettings() m_checkBoxOsCache.setChecked(session->useOSCache()); addRow(OS_CACHE, (tr("Enable OS cache") + ' ' + makeLink("https://www.libtorrent.org/reference-Settings.html#disk_io_write_mode", "(?)")) , &m_checkBoxOsCache); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 // Coalesce reads & writes m_checkBoxCoalesceRW.setChecked(session->isCoalesceReadWriteEnabled()); addRow(COALESCE_RW, (tr("Coalesce reads & writes") + ' ' + makeLink("https://www.libtorrent.org/reference-Settings.html#coalesce_reads", "(?)")) diff --git a/src/gui/advancedsettings.h b/src/gui/advancedsettings.h index 341401d67..ec28c398f 100644 --- a/src/gui/advancedsettings.h +++ b/src/gui/advancedsettings.h @@ -28,8 +28,6 @@ #pragma once -#include - #include #include #include @@ -50,7 +48,7 @@ signals: void settingsChanged(); private slots: -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 void updateCacheSpinSuffix(int value); #endif void updateSaveResumeDataIntervalSuffix(int value); @@ -74,7 +72,7 @@ private: m_comboBoxSeedChokingAlgorithm, m_comboBoxResumeDataStorage; QLineEdit m_lineEditAnnounceIP; -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 QSpinBox m_spinBoxCache, m_spinBoxCacheTTL; QCheckBox m_checkBoxCoalesceRW; #else diff --git a/src/gui/downloadfromurldialog.cpp b/src/gui/downloadfromurldialog.cpp index 4e617a24e..bfcdb4c5a 100644 --- a/src/gui/downloadfromurldialog.cpp +++ b/src/gui/downloadfromurldialog.cpp @@ -50,7 +50,7 @@ namespace || str.startsWith("ftp://", Qt::CaseInsensitive) || str.startsWith("magnet:", Qt::CaseInsensitive) || ((str.size() == 40) && !str.contains(QRegularExpression("[^0-9A-Fa-f]"))) // v1 hex-encoded SHA-1 info-hash -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 || ((str.size() == 64) && !str.contains(QRegularExpression("[^0-9A-Fa-f]"))) // v2 hex-encoded SHA-256 info-hash #endif || ((str.size() == 32) && !str.contains(QRegularExpression("[^2-7A-Za-z]")))); // v1 Base32 encoded SHA-1 info-hash diff --git a/src/gui/statsdialog.cpp b/src/gui/statsdialog.cpp index 2ac1e4a76..faf256480 100644 --- a/src/gui/statsdialog.cpp +++ b/src/gui/statsdialog.cpp @@ -55,7 +55,7 @@ StatsDialog::StatsDialog(QWidget *parent) connect(BitTorrent::Session::instance(), &BitTorrent::Session::statsUpdated , this, &StatsDialog::update); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 m_ui->labelCacheHitsText->hide(); m_ui->labelCacheHits->hide(); #endif @@ -87,7 +87,7 @@ void StatsDialog::update() ((atd > 0) && (atu > 0)) ? Utils::String::fromDouble(static_cast(atu) / atd, 2) : "-"); -#if (LIBTORRENT_VERSION_NUM < 20000) +#ifndef QBT_USES_LIBTORRENT2 // Cache hits const qreal readRatio = cs.readRatio; m_ui->labelCacheHits->setText(QString::fromLatin1("%1%").arg((readRatio > 0) diff --git a/src/gui/torrentcreatordialog.cpp b/src/gui/torrentcreatordialog.cpp index 4665494a3..4db90c5b9 100644 --- a/src/gui/torrentcreatordialog.cpp +++ b/src/gui/torrentcreatordialog.cpp @@ -53,7 +53,7 @@ TorrentCreatorDialog::TorrentCreatorDialog(QWidget *parent, const QString &defau , m_storePrivateTorrent(SETTINGS_KEY("PrivateTorrent")) , m_storeStartSeeding(SETTINGS_KEY("StartSeeding")) , m_storeIgnoreRatio(SETTINGS_KEY("IgnoreRatio")) -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 , m_storeTorrentFormat(SETTINGS_KEY("TorrentFormat")) #else , m_storeOptimizeAlignment(SETTINGS_KEY("OptimizeAlignment")) @@ -84,7 +84,7 @@ TorrentCreatorDialog::TorrentCreatorDialog(QWidget *parent, const QString &defau loadSettings(); updateInputPath(defaultPath); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 m_ui->checkOptimizeAlignment->hide(); #else m_ui->widgetTorrentFormat->hide(); @@ -127,7 +127,7 @@ int TorrentCreatorDialog::getPieceSize() const return pieceSizes[m_ui->comboPieceSize->currentIndex()] * 1024; } -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 BitTorrent::TorrentFormat TorrentCreatorDialog::getTorrentFormat() const { switch (m_ui->comboTorrentFormat->currentIndex()) @@ -201,7 +201,7 @@ void TorrentCreatorDialog::onCreateButtonClicked() const BitTorrent::TorrentCreatorParams params { m_ui->checkPrivate->isChecked() -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 , getTorrentFormat() #else , m_ui->checkOptimizeAlignment->isChecked() @@ -266,7 +266,7 @@ void TorrentCreatorDialog::updateProgressBar(int progress) void TorrentCreatorDialog::updatePiecesCount() { const QString path = m_ui->textInputPath->text().trimmed(); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 const int count = BitTorrent::TorrentCreatorThread::calculateTotalPieces( path, getPieceSize(), getTorrentFormat()); #else @@ -291,7 +291,7 @@ void TorrentCreatorDialog::setInteractionEnabled(const bool enabled) const m_ui->checkStartSeeding->setEnabled(enabled); m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enabled); m_ui->checkIgnoreShareLimits->setEnabled(enabled && m_ui->checkStartSeeding->isChecked()); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 m_ui->widgetTorrentFormat->setEnabled(enabled); #else m_ui->checkOptimizeAlignment->setEnabled(enabled); @@ -307,7 +307,7 @@ void TorrentCreatorDialog::saveSettings() m_storePrivateTorrent = m_ui->checkPrivate->isChecked(); m_storeStartSeeding = m_ui->checkStartSeeding->isChecked(); m_storeIgnoreRatio = m_ui->checkIgnoreShareLimits->isChecked(); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 m_storeTorrentFormat = m_ui->comboTorrentFormat->currentIndex(); #else m_storeOptimizeAlignment = m_ui->checkOptimizeAlignment->isChecked(); @@ -331,7 +331,7 @@ void TorrentCreatorDialog::loadSettings() m_ui->checkStartSeeding->setChecked(m_storeStartSeeding); m_ui->checkIgnoreShareLimits->setChecked(m_storeIgnoreRatio); m_ui->checkIgnoreShareLimits->setEnabled(m_ui->checkStartSeeding->isChecked()); -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 m_ui->comboTorrentFormat->setCurrentIndex(m_storeTorrentFormat.get(1)); #else m_ui->checkOptimizeAlignment->setChecked(m_storeOptimizeAlignment.get(true)); diff --git a/src/gui/torrentcreatordialog.h b/src/gui/torrentcreatordialog.h index 1c0c67195..0b08ff36b 100644 --- a/src/gui/torrentcreatordialog.h +++ b/src/gui/torrentcreatordialog.h @@ -29,8 +29,6 @@ #pragma once -#include - #include #include "base/bittorrent/torrentcreatorthread.h" @@ -68,7 +66,7 @@ private: void setInteractionEnabled(bool enabled) const; int getPieceSize() const; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 BitTorrent::TorrentFormat getTorrentFormat() const; #else int getPaddedFileSizeLimit() const; @@ -83,7 +81,7 @@ private: SettingValue m_storePrivateTorrent; SettingValue m_storeStartSeeding; SettingValue m_storeIgnoreRatio; -#if (LIBTORRENT_VERSION_NUM >= 20000) +#ifdef QBT_USES_LIBTORRENT2 SettingValue m_storeTorrentFormat; #else SettingValue m_storeOptimizeAlignment;