refactor: use a std::vector for tr_session.removed_torrents (#2062)
This commit is contained in:
parent
f270d6081c
commit
9200d972c3
|
@ -885,24 +885,17 @@ static char const* torrentGet(tr_session* session, tr_variant* args_in, tr_varia
|
||||||
|
|
||||||
if (tr_variantDictFindStr(args_in, TR_KEY_ids, &strVal, nullptr) && strcmp(strVal, "recently-active") == 0)
|
if (tr_variantDictFindStr(args_in, TR_KEY_ids, &strVal, nullptr) && strcmp(strVal, "recently-active") == 0)
|
||||||
{
|
{
|
||||||
int n = 0;
|
|
||||||
time_t const now = tr_time();
|
time_t const now = tr_time();
|
||||||
int const interval = RECENTLY_ACTIVE_SECONDS;
|
int const interval = RECENTLY_ACTIVE_SECONDS;
|
||||||
tr_variant* removed_out = tr_variantDictAddList(args_out, TR_KEY_removed, 0);
|
|
||||||
|
|
||||||
tr_variant* d = nullptr;
|
auto const& removed = session->removed_torrents;
|
||||||
while ((d = tr_variantListChild(&session->removedTorrents, n)) != nullptr)
|
tr_variant* removed_out = tr_variantDictAddList(args_out, TR_KEY_removed, std::size(removed));
|
||||||
|
for (auto const& [id, time_removed] : removed)
|
||||||
{
|
{
|
||||||
auto date = int64_t{};
|
if (time_removed >= now - interval)
|
||||||
auto id = int64_t{};
|
|
||||||
|
|
||||||
if (tr_variantDictFindInt(d, TR_KEY_date, &date) && date >= now - interval &&
|
|
||||||
tr_variantDictFindInt(d, TR_KEY_id, &id))
|
|
||||||
{
|
{
|
||||||
tr_variantListAddInt(removed_out, id);
|
tr_variantListAddInt(removed_out, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
++n;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -616,7 +616,7 @@ tr_session* tr_sessionInit(char const* configDir, bool messageQueuingEnabled, tr
|
||||||
session->magicNumber = SESSION_MAGIC_NUMBER;
|
session->magicNumber = SESSION_MAGIC_NUMBER;
|
||||||
session->session_id = tr_session_id_new();
|
session->session_id = tr_session_id_new();
|
||||||
session->bandwidth = new Bandwidth(nullptr);
|
session->bandwidth = new Bandwidth(nullptr);
|
||||||
tr_variantInitList(&session->removedTorrents, 0);
|
session->removed_torrents.clear();
|
||||||
|
|
||||||
/* nice to start logging at the very beginning */
|
/* nice to start logging at the very beginning */
|
||||||
auto i = int64_t{};
|
auto i = int64_t{};
|
||||||
|
@ -2069,7 +2069,6 @@ void tr_sessionClose(tr_session* session)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free the session memory */
|
/* free the session memory */
|
||||||
tr_variantFree(&session->removedTorrents);
|
|
||||||
delete session->bandwidth;
|
delete session->bandwidth;
|
||||||
delete session->turtle.minutes;
|
delete session->turtle.minutes;
|
||||||
tr_session_id_free(session->session_id);
|
tr_session_id_free(session->session_id);
|
||||||
|
|
|
@ -132,7 +132,8 @@ struct tr_session
|
||||||
|
|
||||||
uint8_t peer_id_ttl_hours;
|
uint8_t peer_id_ttl_hours;
|
||||||
|
|
||||||
tr_variant removedTorrents;
|
// torrent id, time removed
|
||||||
|
std::vector<std::pair<int, time_t>> removed_torrents;
|
||||||
|
|
||||||
bool stalledEnabled;
|
bool stalledEnabled;
|
||||||
bool queueEnabled[2];
|
bool queueEnabled[2];
|
||||||
|
|
|
@ -1910,9 +1910,7 @@ static void closeTorrent(void* vtor)
|
||||||
|
|
||||||
TR_ASSERT(tr_isTorrent(tor));
|
TR_ASSERT(tr_isTorrent(tor));
|
||||||
|
|
||||||
tr_variant* d = tr_variantListAddDict(&tor->session->removedTorrents, 2);
|
tor->session->removed_torrents.emplace_back(tor->uniqueId, tr_time());
|
||||||
tr_variantDictAddInt(d, TR_KEY_id, tor->uniqueId);
|
|
||||||
tr_variantDictAddInt(d, TR_KEY_date, tr_time());
|
|
||||||
|
|
||||||
tr_logAddTorInfo(tor, "%s", _("Removing torrent"));
|
tr_logAddTorInfo(tor, "%s", _("Removing torrent"));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue