diff --git a/include/libtorrent/disk_interface.hpp b/include/libtorrent/disk_interface.hpp index 748cd284c..06eeff274 100644 --- a/include/libtorrent/disk_interface.hpp +++ b/include/libtorrent/disk_interface.hpp @@ -53,50 +53,50 @@ namespace libtorrent struct TORRENT_EXTRA_EXPORT disk_interface { virtual void async_read(piece_manager* storage, peer_request const& r - , boost::function const& handler, void* requester + , boost::function handler, void* requester , int flags = 0) = 0; virtual void async_write(piece_manager* storage, peer_request const& r , disk_buffer_holder buffer - , boost::function const& handler + , boost::function handler , int flags = 0) = 0; virtual void async_hash(piece_manager* storage, int piece, int flags - , boost::function const& handler, void* requester) = 0; + , boost::function handler, void* requester) = 0; virtual void async_move_storage(piece_manager* storage, std::string const& p, int flags - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void async_release_files(piece_manager* storage - , boost::function const& handler + , boost::function handler = boost::function()) = 0; virtual void async_check_files(piece_manager* storage , add_torrent_params const* resume_data , std::vector& links - , boost::function const& handler) = 0; + , boost::function handler) = 0; #ifndef TORRENT_NO_DEPRECATE virtual void async_cache_piece(piece_manager* storage, int piece - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void async_finalize_file(piece_manager*, int file - , boost::function const& handler + , boost::function handler = boost::function()) = 0; #endif virtual void async_flush_piece(piece_manager* storage, int piece - , boost::function const& handler + , boost::function handler = boost::function()) = 0; virtual void async_stop_torrent(piece_manager* storage - , boost::function const& handler)= 0; + , boost::function handler)= 0; virtual void async_rename_file(piece_manager* storage, int index, std::string const& name - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void async_delete_files(piece_manager* storage, int options - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void async_set_file_priority(piece_manager* storage , std::vector const& prio - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void async_load_torrent(add_torrent_params* params - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void async_tick_torrent(piece_manager* storage - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void clear_read_cache(piece_manager* storage) = 0; virtual void async_clear_piece(piece_manager* storage, int index - , boost::function const& handler) = 0; + , boost::function handler) = 0; virtual void clear_piece(piece_manager* storage, int index) = 0; virtual void update_stats_counters(counters& c) const = 0; diff --git a/include/libtorrent/disk_io_thread.hpp b/include/libtorrent/disk_io_thread.hpp index 5486a94a4..9ae74aaf0 100644 --- a/include/libtorrent/disk_io_thread.hpp +++ b/include/libtorrent/disk_io_thread.hpp @@ -300,50 +300,50 @@ namespace libtorrent void abort(bool wait); void async_read(piece_manager* storage, peer_request const& r - , boost::function const& handler, void* requester + , boost::function handler, void* requester , int flags = 0) override; void async_write(piece_manager* storage, peer_request const& r , disk_buffer_holder buffer - , boost::function const& handler + , boost::function handler , int flags = 0) override; void async_hash(piece_manager* storage, int piece, int flags - , boost::function const& handler, void* requester) override; + , boost::function handler, void* requester) override; void async_move_storage(piece_manager* storage, std::string const& p, int flags - , boost::function const& handler) override; + , boost::function handler) override; void async_release_files(piece_manager* storage - , boost::function const& handler + , boost::function handler = boost::function()) override; void async_delete_files(piece_manager* storage, int options - , boost::function const& handler) override; + , boost::function handler) override; void async_check_files(piece_manager* storage , add_torrent_params const* resume_data , std::vector& links - , boost::function const& handler) override; + , boost::function handler) override; void async_rename_file(piece_manager* storage, int index, std::string const& name - , boost::function const& handler) override; + , boost::function handler) override; void async_stop_torrent(piece_manager* storage - , boost::function const& handler) override; + , boost::function handler) override; #ifndef TORRENT_NO_DEPRECATE void async_cache_piece(piece_manager* storage, int piece - , boost::function const& handler) override; + , boost::function handler) override; void async_finalize_file(piece_manager* storage, int file - , boost::function const& handler + , boost::function handler = boost::function()) override; #endif void async_flush_piece(piece_manager* storage, int piece - , boost::function const& handler + , boost::function handler = boost::function()) override; void async_set_file_priority(piece_manager* storage , std::vector const& prio - , boost::function const& handler) override; + , boost::function handler) override; void async_load_torrent(add_torrent_params* params - , boost::function const& handler) override; + , boost::function handler) override; void async_tick_torrent(piece_manager* storage - , boost::function const& handler) override; + , boost::function handler) override; void clear_read_cache(piece_manager* storage) override; void async_clear_piece(piece_manager* storage, int index - , boost::function const& handler) override; + , boost::function handler) override; // this is not asynchronous and requires that the piece does not // have any pending buffers. It's meant to be used for pieces that // were just read and hashed and failed the hash check. diff --git a/src/disk_io_thread.cpp b/src/disk_io_thread.cpp index 5b0db463c..266291792 100644 --- a/src/disk_io_thread.cpp +++ b/src/disk_io_thread.cpp @@ -1479,7 +1479,7 @@ namespace libtorrent } void disk_io_thread::async_read(piece_manager* storage, peer_request const& r - , boost::function const& handler, void* requester + , boost::function handler, void* requester , int flags) { INVARIANT_CHECK; @@ -1503,7 +1503,7 @@ namespace libtorrent j->buffer.disk_block = 0; j->flags = flags; j->requester = requester; - j->callback = handler; + j->callback = std::move(handler); std::unique_lock l(m_cache_mutex); int ret = prep_read_job_impl(j); @@ -1512,7 +1512,7 @@ namespace libtorrent switch (ret) { case 0: - if (handler) handler(j); + if (j->callback) j->callback(j); free_job(j); break; case 1: @@ -1599,7 +1599,7 @@ namespace libtorrent void disk_io_thread::async_write(piece_manager* storage, peer_request const& r , disk_buffer_holder buffer - , boost::function const& handler + , boost::function handler , int flags) { INVARIANT_CHECK; @@ -1619,7 +1619,7 @@ namespace libtorrent j->d.io.offset = r.start; j->d.io.buffer_size = r.length; j->buffer.disk_block = buffer.get(); - j->callback = handler; + j->callback = std::move(handler); j->flags = flags; #if TORRENT_USE_ASSERTS @@ -1709,7 +1709,7 @@ namespace libtorrent } void disk_io_thread::async_hash(piece_manager* storage, int piece, int flags - , boost::function const& handler, void* requester) + , boost::function handler, void* requester) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1720,7 +1720,7 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::hash); j->storage = storage->shared_from_this(); j->piece = piece; - j->callback = handler; + j->callback = std::move(handler); j->flags = flags; j->requester = requester; @@ -1745,7 +1745,7 @@ namespace libtorrent #endif l.unlock(); - if (handler) handler(j); + if (j->callback) j->callback(j); free_job(j); return; } @@ -1754,7 +1754,7 @@ namespace libtorrent } void disk_io_thread::async_move_storage(piece_manager* storage, std::string const& p, int flags - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1765,25 +1765,25 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::move_storage); j->storage = storage->shared_from_this(); j->buffer.string = allocate_string_copy(p.c_str()); - j->callback = handler; + j->callback = std::move(handler); j->flags = flags; add_fence_job(storage, j); } void disk_io_thread::async_release_files(piece_manager* storage - , boost::function const& handler) + , boost::function handler) { disk_io_job* j = allocate_job(disk_io_job::release_files); j->storage = storage->shared_from_this(); - j->callback = handler; + j->callback = std::move(handler); add_fence_job(storage, j); } void disk_io_thread::async_delete_files(piece_manager* storage , int const options - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1822,7 +1822,7 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::delete_files); j->storage = storage->shared_from_this(); - j->callback = handler; + j->callback = std::move(handler); j->buffer.delete_options = options; add_fence_job(storage, j); @@ -1836,7 +1836,7 @@ namespace libtorrent void disk_io_thread::async_check_files(piece_manager* storage , add_torrent_params const* resume_data , std::vector& links - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1852,13 +1852,13 @@ namespace libtorrent j->storage = storage->shared_from_this(); j->buffer.check_resume_data = resume_data; j->d.links = links_vector; - j->callback = handler; + j->callback = std::move(handler); add_fence_job(storage, j); } void disk_io_thread::async_rename_file(piece_manager* storage, int index, std::string const& name - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1870,12 +1870,12 @@ namespace libtorrent j->storage = storage->shared_from_this(); j->piece = index; j->buffer.string = allocate_string_copy(name.c_str()); - j->callback = handler; + j->callback = std::move(handler); add_fence_job(storage, j); } void disk_io_thread::async_stop_torrent(piece_manager* storage - , boost::function const& handler) + , boost::function handler) { // remove outstanding hash jobs belonging to this torrent std::unique_lock l2(m_job_mutex); @@ -1899,7 +1899,7 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::stop_torrent); j->storage = storage->shared_from_this(); - j->callback = handler; + j->callback = std::move(handler); add_fence_job(storage, j); jobqueue_t completed_jobs; @@ -1911,7 +1911,7 @@ namespace libtorrent #ifndef TORRENT_NO_DEPRECATE void disk_io_thread::async_cache_piece(piece_manager* storage, int piece - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1922,13 +1922,13 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::cache_piece); j->storage = storage->shared_from_this(); j->piece = piece; - j->callback = handler; + j->callback = std::move(handler); add_job(j); } void disk_io_thread::async_finalize_file(piece_manager* storage, int file - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1939,14 +1939,14 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::finalize_file); j->storage = storage->shared_from_this(); j->piece = file; - j->callback = handler; + j->callback = std::move(handler); add_job(j); } #endif // TORRENT_NO_DEPRECATE void disk_io_thread::async_flush_piece(piece_manager* storage, int piece - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1957,12 +1957,12 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::flush_piece); j->storage = storage->shared_from_this(); j->piece = piece; - j->callback = handler; + j->callback = std::move(handler); if (m_abort) { j->error.ec = boost::asio::error::operation_aborted; - if (handler) handler(j); + if (j->callback) j->callback(j); free_job(j); return; } @@ -1972,7 +1972,7 @@ namespace libtorrent void disk_io_thread::async_set_file_priority(piece_manager* storage , std::vector const& prios - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -1985,27 +1985,27 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::file_priority); j->storage = storage->shared_from_this(); j->buffer.priorities = p; - j->callback = handler; + j->callback = std::move(handler); add_fence_job(storage, j); } void disk_io_thread::async_load_torrent(add_torrent_params* params - , boost::function const& handler) + , boost::function handler) { disk_io_job* j = allocate_job(disk_io_job::load_torrent); j->requester = reinterpret_cast(params); - j->callback = handler; + j->callback = std::move(handler); add_job(j); } void disk_io_thread::async_tick_torrent(piece_manager* storage - , boost::function const& handler) + , boost::function handler) { disk_io_job* j = allocate_job(disk_io_job::tick_storage); j->storage = storage->shared_from_this(); - j->callback = handler; + j->callback = std::move(handler); add_job(j); } @@ -2028,7 +2028,7 @@ namespace libtorrent } void disk_io_thread::async_clear_piece(piece_manager* storage, int index - , boost::function const& handler) + , boost::function handler) { #ifdef TORRENT_DEBUG // the caller must increment the torrent refcount before @@ -2039,7 +2039,7 @@ namespace libtorrent disk_io_job* j = allocate_job(disk_io_job::clear_piece); j->storage = storage->shared_from_this(); j->piece = index; - j->callback = handler; + j->callback = std::move(handler); // regular jobs are not guaranteed to be executed in-order // since clear piece must guarantee that all write jobs that diff --git a/src/peer_connection.cpp b/src/peer_connection.cpp index 9da90d46d..d99a62201 100644 --- a/src/peer_connection.cpp +++ b/src/peer_connection.cpp @@ -2725,7 +2725,7 @@ namespace libtorrent return; } - time_point now = clock_type::now(); + time_point const now = clock_type::now(); t->need_picker(); @@ -2824,7 +2824,7 @@ namespace libtorrent #ifndef TORRENT_DISABLE_LOGGING t->debug_log("PIECE [%p] (%d ms) (%d)", static_cast(this) - , int(total_milliseconds(clock_type::now() - m_unchoke_time)), t->num_have()); + , int(total_milliseconds(now - m_unchoke_time)), t->num_have()); peer_log(peer_log_alert::info, "FILE_ASYNC_WRITE", "piece: %d s: %x l: %x" , p.piece, p.start, p.length); @@ -2872,9 +2872,9 @@ namespace libtorrent if (!m_download_queue.empty()) m_requested = now; - bool was_finished = picker.is_piece_finished(p.piece); + bool const was_finished = picker.is_piece_finished(p.piece); // did we request this block from any other peers? - bool multi = picker.num_peers(block_finished) > 1; + bool const multi = picker.num_peers(block_finished) > 1; // std::fprintf(stderr, "peer_connection mark_as_writing peer: %p piece: %d block: %d\n" // , peer_info_struct(), block_finished.piece_index, block_finished.block_index); picker.mark_as_writing(block_finished, peer_info_struct()); @@ -3301,7 +3301,7 @@ namespace libtorrent #ifndef TORRENT_DISABLE_LOGGING { - time_point now = clock_type::now(); + time_point const now = clock_type::now(); t->debug_log("ALLOW FAST [%p] (%d ms)" , static_cast(this) , int(total_milliseconds(now - m_connect_time))); @@ -3983,8 +3983,7 @@ namespace libtorrent // request timeout. m_requested = aux::time_now(); #ifndef TORRENT_DISABLE_LOGGING - t->debug_log("REQUEST [%p] (%d ms)", static_cast(this) - , int(total_milliseconds(clock_type::now() - m_unchoke_time))); + t->debug_log("REQUEST [%p]", static_cast(this)); #endif } } diff --git a/src/piece_picker.cpp b/src/piece_picker.cpp index 17ab6656c..01c6c3c75 100644 --- a/src/piece_picker.cpp +++ b/src/piece_picker.cpp @@ -2089,7 +2089,7 @@ namespace libtorrent { for (int i = m_reverse_cursor - 1; i >= m_cursor; --i) { - pc.inc_stats_counter(counters::piece_picker_sequential_loops); +// pc.inc_stats_counter(counters::piece_picker_sequential_loops); if (!is_piece_free(i, pieces)) continue; // we've already added high priority pieces if (piece_priority(i) == priority_levels - 1) continue; @@ -2108,7 +2108,7 @@ namespace libtorrent { for (int i = m_cursor; i < m_reverse_cursor; ++i) { - pc.inc_stats_counter(counters::piece_picker_sequential_loops); +// pc.inc_stats_counter(counters::piece_picker_sequential_loops); if (!is_piece_free(i, pieces)) continue; // we've already added high priority pieces if (piece_priority(i) == priority_levels - 1) continue; diff --git a/src/request_blocks.cpp b/src/request_blocks.cpp index 56b26e6bd..fedf57f31 100644 --- a/src/request_blocks.cpp +++ b/src/request_blocks.cpp @@ -80,12 +80,10 @@ namespace libtorrent bool time_critical_mode = t.num_time_critical_pieces() > 0; - int desired_queue_size = c.desired_queue_size(); - // in time critical mode, only have 1 outstanding request at a time // via normal requests - if (time_critical_mode) - desired_queue_size = (std::min)(1, desired_queue_size); + int const desired_queue_size = time_critical_mode + ? 1 : c.desired_queue_size(); int num_requests = desired_queue_size - int(c.download_queue().size()) @@ -95,9 +93,9 @@ namespace libtorrent c.peer_log(peer_log_alert::info, "PIECE_PICKER" , "dlq: %d rqq: %d target: %d req: %d engame: %d" , int(c.download_queue().size()), int(c.request_queue().size()) - , c.desired_queue_size(), num_requests, c.endgame()); + , desired_queue_size, num_requests, c.endgame()); #endif - TORRENT_ASSERT(c.desired_queue_size() > 0); + TORRENT_ASSERT(desired_queue_size > 0); // if our request queue is already full, we // don't have to make any new requests yet if (num_requests <= 0) return false;