Moved curl to libtorrent.

This commit is contained in:
Jari Sundell
2025-06-05 13:29:43 +02:00
committed by GitHub
parent 231606afc1
commit 6c25e64c26
23 changed files with 167 additions and 911 deletions
+12 -25
View File
@@ -1,43 +1,32 @@
#include "config.h"
#include <memory>
#include <sstream>
#include <torrent/http.h>
#include "http_queue.h"
#include "curl_get.h"
#include <torrent/net/http_get.h>
#include <torrent/net/http_stack.h>
namespace core {
HttpQueue::iterator
HttpQueue::insert(const std::string& url, std::iostream* s) {
std::unique_ptr<CurlGet> h(m_slot_factory());
auto itr = base_type::insert(end(), torrent::net_thread::http_stack()->create(url, s));
h->set_url(url);
h->set_stream(s);
h->set_timeout(5 * 60);
itr->add_done_slot([this, itr]() { erase(itr); });
itr->add_failed_slot([this, itr](auto) { erase(itr); });
iterator signal_itr = base_type::insert(end(), h.get());
itr->start();
h->signal_done().push_back(std::bind(&HttpQueue::erase, this, signal_itr));
h->signal_failed().push_back(std::bind(&HttpQueue::erase, this, signal_itr));
for (auto& slot : m_signal_insert)
slot(*itr);
(*signal_itr)->start();
h.release();
for (signal_curl_get::iterator itr = m_signal_insert.begin(), last = m_signal_insert.end(); itr != last; itr++)
(*itr)(*signal_itr);
return signal_itr;
return itr;
}
void
HttpQueue::erase(iterator signal_itr) {
for (signal_curl_get::iterator itr = m_signal_erase.begin(), last = m_signal_erase.end(); itr != last; itr++)
(*itr)(*signal_itr);
for (const auto& slot : m_signal_erase)
slot(*signal_itr);
delete *signal_itr;
base_type::erase(signal_itr);
}
@@ -45,8 +34,6 @@ void
HttpQueue::clear() {
while (!empty())
erase(begin());
base_type::clear();
}
}