#include "addon/downloader.hpp"
#include <algorithm>
+#include <array>
#include <assert.h>
#include <memory>
#include <physfs.h>
m_id(id),
m_url(url),
m_handle(),
- m_error_buffer({'\0'}),
- m_status(new TransferStatus(downloader, id)),
+ m_error_buffer({{'\0'}}),
+ m_status(new TransferStatus(m_downloader, id)),
m_fout(PHYSFS_openWrite(outfile.c_str()), PHYSFS_close)
{
if (!m_fout)
return size * nmemb;
}
- void on_progress(double dltotal, double dlnow,
+ int on_progress(double dltotal, double dlnow,
double ultotal, double ulnow)
{
m_status->dltotal = static_cast<int>(dltotal);
m_status->ultotal = static_cast<int>(ultotal);
m_status->ulnow = static_cast<int>(ulnow);
+
+ return 0;
}
private:
return static_cast<Transfer*>(userdata)->on_data(ptr, size, nmemb);
}
- static void on_progress_wrap(void* userdata,
- double dltotal, double dlnow,
- double ultotal, double ulnow)
+ static int on_progress_wrap(void* userdata,
+ double dltotal, double dlnow,
+ double ultotal, double ulnow)
{
return static_cast<Transfer*>(userdata)->on_progress(dltotal, dlnow, ultotal, ulnow);
}
void
Downloader::download(const std::string& url, const std::string& filename)
{
+ log_info << "download: " << url << " to " << filename << std::endl;
std::unique_ptr<PHYSFS_file, int(*)(PHYSFS_File*)> fout(PHYSFS_openWrite(filename.c_str()),
PHYSFS_close);
download(url, my_curl_physfs_write, fout.get());
TransferStatusPtr
Downloader::request_download(const std::string& url, const std::string& outfile)
{
+ log_info << "request_download: " << url << std::endl;
std::unique_ptr<Transfer> transfer(new Transfer(*this, m_next_transfer_id++, url, outfile));
curl_multi_add_handle(m_multi_handle, transfer->get_curl_handle());
m_transfers.push_back(std::move(transfer));