|
|
@ -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; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|