correct last announce time

This commit is contained in:
orignal committed 2026-08-29 20:58:11 -04:00
1 parent f13d550006
commit 1fff0d9f3c
3 files changed
+15 -8

No files matched your search

+9 -4
View File
@@ -491,7 +491,8 @@ namespace torrents
void Torrent::ParseTrackerResponse (size_t trackerID, std::string_view buf)
{
if (trackerID >= m_TrackersInfo.size ())
m_TrackersInfo.resize (trackerID + 1, TrackerInfo{{}, MIN_TRACKER_REQUESTS_INTERVAL, 0, 0, 0});
m_TrackersInfo.resize (trackerID + 1, TrackerInfo{{}, MIN_TRACKER_REQUESTS_INTERVAL,
0, 0, 0, i2p::util::GetSecondsSinceEpoch ()});
ParseDictionary (buf, [this, trackerID](std::string_view key, std::string_view buf)->size_t
{
if (key == "interval")
@@ -527,6 +528,7 @@ namespace torrents
}
return 0;
});
std::get<4>(m_TrackersInfo[trackerID]) = i2p::util::GetSecondsSinceEpoch ();
}
size_t Torrent::ParsePeers (size_t trackerID, std::string_view buf)
@@ -546,12 +548,14 @@ namespace torrents
const uint8_t * hashes, size_t hashesLen, int numSeeders, int numLeechers)
{
if (trackerID >= m_TrackersInfo.size ())
m_TrackersInfo.resize (trackerID + 1, TrackerInfo{{}, MIN_TRACKER_REQUESTS_INTERVAL, 0, 0, 0});
auto& [peers, trackerRequestInterval, nextRequestTime, seeders, leechers] = m_TrackersInfo[trackerID];
m_TrackersInfo.resize (trackerID + 1, TrackerInfo{{}, MIN_TRACKER_REQUESTS_INTERVAL,
0, 0, 0, i2p::util::GetSecondsSinceEpoch () });
auto& [peers, trackerRequestInterval, nextRequestTime, seeders, leechers, lastUpdateTime] = m_TrackersInfo[trackerID];
trackerRequestInterval = interval*1000; // milliseconds
nextRequestTime = i2p::util::GetMonotonicMilliseconds () + trackerRequestInterval;
seeders = numSeeders;
leechers = numLeechers;
lastUpdateTime = i2p::util::GetSecondsSinceEpoch ();
peers.clear ();
size_t offset = 0;
while (offset + i2p::data::IdentHash::len <= hashesLen)
@@ -807,7 +811,8 @@ namespace torrents
void Torrent::SetNextTrackerRequestTime (size_t trackerID, uint64_t ts)
{
if (trackerID >= m_TrackersInfo.size ())
m_TrackersInfo.resize (trackerID + 1, TrackerInfo{{}, MIN_TRACKER_REQUESTS_INTERVAL, 0, 0, 0});
m_TrackersInfo.resize (trackerID + 1, TrackerInfo{{}, MIN_TRACKER_REQUESTS_INTERVAL,
0, 0, 0, i2p::util::GetSecondsSinceEpoch ()});
std::get<2>(m_TrackersInfo[trackerID]) = ts;
}
+4 -2
View File
@@ -149,8 +149,9 @@ namespace torrents
public:
using InfoHash = std::array<uint8_t, 20>;
using TrackerInfo = std::tuple<std::unordered_set<i2p::data::IdentHash>, int, uint64_t, int, int>;
// (peers, interval, next tracker request time in monotonic milliseconds, seeders, leechers)
using TrackerInfo = std::tuple<std::unordered_set<i2p::data::IdentHash>, int, uint64_t, int, int, uint64_t>;
// (peers, interval, next tracker request time in monotonic milliseconds,
// seeders, leechers, last update time in seconds since epoch)
Torrent (std::string_view buf);
void ParseTrackerResponse (size_t trackerID, std::string_view buf);
@@ -212,6 +213,7 @@ namespace torrents
int GetNumSeeders (size_t trackerID) const { return (trackerID < m_TrackersInfo.size ()) ? std::get<3>(m_TrackersInfo[trackerID]) : 0; }
int GetNumLeechers (size_t trackerID) const { return (trackerID < m_TrackersInfo.size ()) ? std::get<4>(m_TrackersInfo[trackerID]) : 0; }
int GetNumPeers (size_t trackerID) const { return (trackerID < m_TrackersInfo.size ()) ? std::get<0>(m_TrackersInfo[trackerID]).size () : 0; }
uint64_t GetLastTrackerUpdateTime (size_t trackerID) const { return (trackerID < m_TrackersInfo.size ()) ? std::get<5>(m_TrackersInfo[trackerID]) : 0; }
private:
+2 -2
View File
@@ -450,8 +450,8 @@ namespace torrents
tracker["lastAnnounceTimedOut"] = false; // TODO:
tracker["nextAnnounceTime"] = (torrent->GetNextTrackerRequestTime (i) -
i2p::util::GetMonotonicMilliseconds () + i2p::util::GetMillisecondsSinceEpoch ())/1000;
tracker["lastAnnounceTime"] = i2p::util::GetSecondsSinceEpoch (); // TODO:
tracker["lastAnnounceStartTime"] = i2p::util::GetSecondsSinceEpoch (); // TODO:
tracker["lastAnnounceTime"] = torrent->GetLastTrackerUpdateTime (i);
tracker["lastAnnounceStartTime"] = torrent->GetLastTrackerUpdateTime (i); // TODO:
tracker["lastScrapeTime"] = 0;
tracker["lastScrapeStartTime"] = 0;
tracker["nextScrapeTime"] = 0;