move the file priority vector throught the disk_io_job, to avoid copies

This commit is contained in:
arvidn 2018-07-08 14:36:32 +02:00 committed by Arvid Norberg
parent e45df614fe
commit 2ba0e5ae2c
7 changed files with 8 additions and 8 deletions

View File

@ -172,7 +172,7 @@ namespace libtorrent {
, std::function<void(storage_error const&)> handler) = 0;
virtual void async_set_file_priority(storage_index_t storage
, aux::vector<download_priority_t, file_index_t> prio
, std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t> const&)> handler) = 0;
, std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t>)> handler) = 0;
virtual void async_clear_piece(storage_index_t storage, piece_index_t index
, std::function<void(piece_index_t)> handler) = 0;

View File

@ -138,7 +138,7 @@ namespace libtorrent {
using check_handler = std::function<void(status_t, storage_error const&)>;
using rename_handler = std::function<void(std::string, file_index_t, storage_error const&)>;
using clear_piece_handler = std::function<void(piece_index_t)>;
using set_file_prio_handler = std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t> const&)>;
using set_file_prio_handler = std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t>)>;
boost::variant<read_handler
, write_handler

View File

@ -330,7 +330,7 @@ namespace aux {
, std::function<void()> handler = std::function<void()>()) override;
void async_set_file_priority(storage_index_t storage
, aux::vector<download_priority_t, file_index_t> prio
, std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t> const&)> handler) override;
, std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t>)> handler) override;
void async_clear_piece(storage_index_t storage, piece_index_t index
, std::function<void(piece_index_t)> handler) override;

View File

@ -569,7 +569,7 @@ namespace libtorrent {
void set_file_priority(file_index_t index, download_priority_t priority);
download_priority_t file_priority(file_index_t index) const;
void on_file_priority(storage_error const& err, aux::vector<download_priority_t, file_index_t> const& prios);
void on_file_priority(storage_error const& err, aux::vector<download_priority_t, file_index_t> prios);
void prioritize_files(aux::vector<download_priority_t, file_index_t> const& files);
void file_priorities(aux::vector<download_priority_t, file_index_t>*) const;

View File

@ -100,7 +100,7 @@ namespace libtorrent {
void operator()(disk_io_job::set_file_prio_handler& h) const
{
if (!h) return;
h(m_job.error, boost::get<aux::vector<download_priority_t, file_index_t>>(m_job.argument));
h(m_job.error, std::move(boost::get<aux::vector<download_priority_t, file_index_t>>(m_job.argument)));
}
private:

View File

@ -1920,7 +1920,7 @@ constexpr disk_job_flags_t disk_interface::cache_hit;
void disk_io_thread::async_set_file_priority(storage_index_t const storage
, aux::vector<download_priority_t, file_index_t> prios
, std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t> const&)> handler)
, std::function<void(storage_error const&, aux::vector<download_priority_t, file_index_t>)> handler)
{
disk_io_job* j = allocate_job(job_action_t::file_priority);
j->storage = m_torrents[storage]->shared_from_this();

View File

@ -5041,12 +5041,12 @@ bool is_downloading_state(int const st)
}
void torrent::on_file_priority(storage_error const& err
, aux::vector<download_priority_t, file_index_t> const& prios)
, aux::vector<download_priority_t, file_index_t> prios)
{
COMPLETE_ASYNC("file_priority");
if (m_file_priority != prios)
{
m_file_priority = prios;
m_file_priority = std::move(prios);
update_piece_priorities();
if (m_share_mode)
recalc_share_mode();