mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2026-10-23 06:22:30 +00:00
correct last announce time
This commit is contained in:
1 parent
f13d550006
commit
1fff0d9f3c
3 files changed
+15
-8
No files matched your search
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user