remove all torrents if ids is not specified

This commit is contained in:
orignal
2026-10-03 21:07:38 -04:00
parent 18b3fb5a46
commit a11971809c
3 changed files with 21 additions and 3 deletions
+9 -3
View File
@@ -109,7 +109,7 @@ namespace torrents
else
torrentIds.push_back (ids.as_int64 ());
}
return torrentIds;;
return torrentIds;
}
std::string JSONRPCHandler::HandleRequest (std::string_view request)
@@ -201,8 +201,14 @@ namespace torrents
bool deleteFiles = false;
if (arguments.contains ("delete-local-data"))
deleteFiles = arguments.at ("delete-local-data").as_bool ();
for (auto id: GetTorrentIds (arguments))
m_Tunnel->RemoveTorrent (id, deleteFiles);
auto torrentIds = GetTorrentIds (arguments);
if (!torrentIds.empty ())
{
for (auto id: torrentIds)
m_Tunnel->RemoveTorrent (id, deleteFiles);
}
else
m_Tunnel->RemoveAllTorrents (deleteFiles);
boost::json::object response; // always empty
return SuccessResponse (GetTag (jsonRequest), std::move (response));
}
+11
View File
@@ -451,6 +451,17 @@ namespace torrents
return true;
}
void TorrentsTunnel::RemoveAllTorrents (bool deleteFiles)
{
boost::asio::post (GetService (), [this, deleteFiles]()
{
for (const auto& it: m_Torrents)
RemoveTorrent (it.second, deleteFiles);
m_Torrents.clear ();
m_TorrentsByID.clear ();
});
}
void TorrentsTunnel::RemoveTorrent (std::shared_ptr<Torrent> torrent, bool deleteFiles)
{
if (!torrent) return;
+1
View File
@@ -110,6 +110,7 @@ namespace torrents
std::pair<std::shared_ptr<Torrent>, int> AddMagnet (std::string_view magnet); // return (torrent, id)
void UpdateTorrentInfo (std::shared_ptr<Torrent> torrent, std::string_view info); // magnet
bool RemoveTorrent (int id, bool deleteFiles);
void RemoveAllTorrents (bool deleteFiles);
bool StopTorrent (int id);
bool StartTorrent (int id);
void ConnectToNewPeers (std::shared_ptr<Torrent> torrent, std::unordered_set<i2p::data::IdentHash>& newPeers, PeerConnectionOrigin origin);