Browse Source

Add support for tracker scrape in libtorrent 2.0

adaptive-webui-19844
Chocobo1 4 years ago
parent
commit
480832318c
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 42
      src/base/bittorrent/trackerentry.cpp

42
src/base/bittorrent/trackerentry.cpp

@ -30,6 +30,8 @@
#include <algorithm> #include <algorithm>
#include <libtorrent/version.hpp>
#include <QString> #include <QString>
#include <QUrl> #include <QUrl>
@ -62,7 +64,15 @@ TrackerEntry::Status TrackerEntry::status() const
const bool allFailed = !endpoints.empty() && std::all_of(endpoints.begin(), endpoints.end() const bool allFailed = !endpoints.empty() && std::all_of(endpoints.begin(), endpoints.end()
, [](const lt::announce_endpoint &endpoint) , [](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); return (endpoint.fails > 0);
#endif
}); });
if (allFailed) if (allFailed)
return NotWorking; return NotWorking;
@ -70,7 +80,15 @@ TrackerEntry::Status TrackerEntry::status() const
const bool isUpdating = std::any_of(endpoints.begin(), endpoints.end() const bool isUpdating = std::any_of(endpoints.begin(), endpoints.end()
, [](const lt::announce_endpoint &endpoint) , [](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; return endpoint.updating;
#endif
}); });
if (isUpdating) if (isUpdating)
return Updating; return Updating;
@ -89,24 +107,42 @@ void TrackerEntry::setTier(const int value)
int TrackerEntry::numSeeds() const int TrackerEntry::numSeeds() const
{ {
int value = -1; 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); value = std::max(value, endpoint.scrape_complete);
#endif
}
return value; return value;
} }
int TrackerEntry::numLeeches() const int TrackerEntry::numLeeches() const
{ {
int value = -1; 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); value = std::max(value, endpoint.scrape_incomplete);
#endif
}
return value; return value;
} }
int TrackerEntry::numDownloaded() const int TrackerEntry::numDownloaded() const
{ {
int value = -1; 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); value = std::max(value, endpoint.scrape_downloaded);
#endif
}
return value; return value;
} }

Loading…
Cancel
Save