diff --git a/src/base/bittorrent/trackerentry.cpp b/src/base/bittorrent/trackerentry.cpp index e20be6589..61b359012 100644 --- a/src/base/bittorrent/trackerentry.cpp +++ b/src/base/bittorrent/trackerentry.cpp @@ -30,6 +30,8 @@ #include +#include + #include #include @@ -62,7 +64,15 @@ TrackerEntry::Status TrackerEntry::status() const const bool allFailed = !endpoints.empty() && std::all_of(endpoints.begin(), endpoints.end() , [](const lt::announce_endpoint &endpoint) { +#if (LIBTORRENT_VERSION_NUM >= 20000) + return std::all_of(endpoint.info_hashes.begin(), endpoint.info_hashes.end() + , [](const lt::announce_infohash &infohash) + { + return (infohash.fails > 0); + }); +#else return (endpoint.fails > 0); +#endif }); if (allFailed) return NotWorking; @@ -70,7 +80,15 @@ TrackerEntry::Status TrackerEntry::status() const const bool isUpdating = std::any_of(endpoints.begin(), endpoints.end() , [](const lt::announce_endpoint &endpoint) { +#if (LIBTORRENT_VERSION_NUM >= 20000) + return std::any_of(endpoint.info_hashes.begin(), endpoint.info_hashes.end() + , [](const lt::announce_infohash &infohash) + { + return infohash.updating; + }); +#else return endpoint.updating; +#endif }); if (isUpdating) return Updating; @@ -89,24 +107,42 @@ void TrackerEntry::setTier(const int value) int TrackerEntry::numSeeds() const { int value = -1; - for (const lt::announce_endpoint &endpoint : nativeEntry().endpoints) + for (const lt::announce_endpoint &endpoint : nativeEntry().endpoints) { +#if (LIBTORRENT_VERSION_NUM >= 20000) + for (const lt::announce_infohash &infoHash : endpoint.info_hashes) + value = std::max(value, infoHash.scrape_complete); +#else value = std::max(value, endpoint.scrape_complete); +#endif + } return value; } int TrackerEntry::numLeeches() const { int value = -1; - for (const lt::announce_endpoint &endpoint : nativeEntry().endpoints) + for (const lt::announce_endpoint &endpoint : nativeEntry().endpoints) { +#if (LIBTORRENT_VERSION_NUM >= 20000) + for (const lt::announce_infohash &infoHash : endpoint.info_hashes) + value = std::max(value, infoHash.scrape_incomplete); +#else value = std::max(value, endpoint.scrape_incomplete); +#endif + } return value; } int TrackerEntry::numDownloaded() const { int value = -1; - for (const lt::announce_endpoint &endpoint : nativeEntry().endpoints) + for (const lt::announce_endpoint &endpoint : nativeEntry().endpoints) { +#if (LIBTORRENT_VERSION_NUM >= 20000) + for (const lt::announce_infohash &infoHash : endpoint.info_hashes) + value = std::max(value, infoHash.scrape_downloaded); +#else value = std::max(value, endpoint.scrape_downloaded); +#endif + } return value; }