deprecate old session_settings API (use settings_pack instead) (#1117)

deprecate old session_settings API (use settings_pack instead)
This commit is contained in:
Arvid Norberg 2016-09-20 23:49:23 -07:00 committed by GitHub
parent f139776542
commit 3e7e806a77
13 changed files with 51 additions and 1780 deletions

View File

@ -1,3 +1,4 @@
* remove deprecate session_settings API (use settings_pack instead)
* improve file layout optimization when creating torrents with padfiles
* remove remote_dl_rate feature
* source code migration from boost::shared_ptr to std::shared_ptr

View File

@ -145,25 +145,6 @@ namespace
return std::make_shared<lt::session>(p, flags);
}
#ifndef TORRENT_NO_DEPRECATE
void session_set_settings(lt::session& ses, object const& sett)
{
extract<session_settings> old_settings(sett);
if (old_settings.check())
{
allow_threading_guard guard;
ses.set_settings(old_settings);
}
else
{
settings_pack p;
make_settings_pack(p, extract<dict>(sett));
allow_threading_guard guard;
ses.apply_settings(p);
}
}
#endif
void session_apply_settings(lt::session& ses, dict const& sett_dict)
{
settings_pack p;
@ -749,8 +730,6 @@ void bind_session()
.def("remove_torrent", allow_threads(&lt::session::remove_torrent), arg("option") = 0)
#ifndef TORRENT_NO_DEPRECATE
.def("status", allow_threads(&lt::session::status))
.def("settings", &lt::session::settings)
.def("set_settings", &session_set_settings)
#endif
.def("get_settings", &session_get_settings)
.def("apply_settings", &session_apply_settings)
@ -863,15 +842,6 @@ void bind_session()
typedef void (*mem_preset2)(settings_pack& s);
typedef void (*perf_preset2)(settings_pack& s);
#ifndef TORRENT_NO_DEPRECATE
typedef session_settings (*mem_preset1)();
typedef session_settings (*perf_preset1)();
def("high_performance_seed", (perf_preset1)high_performance_seed);
def("min_memory_usage", (mem_preset1)min_memory_usage);
#endif
def("high_performance_seed", (perf_preset2)high_performance_seed);
def("min_memory_usage", (mem_preset2)min_memory_usage);
def("read_resume_data", read_resume_data_wrapper);

View File

@ -10,187 +10,6 @@ using namespace libtorrent;
void bind_session_settings()
{
#ifndef TORRENT_NO_DEPRECATE
class_<session_settings>("session_settings")
.def_readwrite("user_agent", &session_settings::user_agent)
.def_readwrite("tracker_completion_timeout", &session_settings::tracker_completion_timeout)
.def_readwrite("tracker_receive_timeout", &session_settings::tracker_receive_timeout)
.def_readwrite("stop_tracker_timeout", &session_settings::stop_tracker_timeout)
.def_readwrite("tracker_maximum_response_length", &session_settings::tracker_maximum_response_length)
.def_readwrite("piece_timeout", &session_settings::piece_timeout)
.def_readwrite("request_timeout", &session_settings::request_timeout)
.def_readwrite("request_queue_time", &session_settings::request_queue_time)
.def_readwrite("max_allowed_in_request_queue", &session_settings::max_allowed_in_request_queue)
.def_readwrite("max_out_request_queue", &session_settings::max_out_request_queue)
.def_readwrite("whole_pieces_threshold", &session_settings::whole_pieces_threshold)
.def_readwrite("peer_timeout", &session_settings::peer_timeout)
.def_readwrite("urlseed_timeout", &session_settings::urlseed_timeout)
.def_readwrite("urlseed_pipeline_size", &session_settings::urlseed_pipeline_size)
.def_readwrite("urlseed_wait_retry", &session_settings::urlseed_wait_retry)
.def_readwrite("file_pool_size", &session_settings::file_pool_size)
.def_readwrite("allow_multiple_connections_per_ip", &session_settings::allow_multiple_connections_per_ip)
.def_readwrite("max_failcount", &session_settings::max_failcount)
.def_readwrite("min_reconnect_time", &session_settings::min_reconnect_time)
.def_readwrite("peer_connect_timeout", &session_settings::peer_connect_timeout)
.def_readwrite("ignore_limits_on_local_network", &session_settings::ignore_limits_on_local_network)
.def_readwrite("connection_speed", &session_settings::connection_speed)
.def_readwrite("send_redundant_have", &session_settings::send_redundant_have)
.def_readwrite("lazy_bitfields", &session_settings::lazy_bitfields)
.def_readwrite("inactivity_timeout", &session_settings::inactivity_timeout)
.def_readwrite("unchoke_interval", &session_settings::unchoke_interval)
.def_readwrite("optimistic_unchoke_interval", &session_settings::optimistic_unchoke_interval)
.def_readwrite("announce_ip", &session_settings::announce_ip)
.def_readwrite("num_want", &session_settings::num_want)
.def_readwrite("initial_picker_threshold", &session_settings::initial_picker_threshold)
.def_readwrite("allowed_fast_set_size", &session_settings::allowed_fast_set_size)
// this is no longer used
.def_readwrite("max_queued_disk_bytes", &session_settings::max_queued_disk_bytes)
.def_readwrite("max_queued_disk_bytes_low_watermark", &session_settings::max_queued_disk_bytes_low_watermark)
.def_readwrite("handshake_timeout", &session_settings::handshake_timeout)
#ifndef TORRENT_DISABLE_DHT
.def_readwrite("use_dht_as_fallback", &session_settings::use_dht_as_fallback)
#endif
.def_readwrite("free_torrent_hashes", &session_settings::free_torrent_hashes)
.def_readwrite("upnp_ignore_nonrouters", &session_settings::upnp_ignore_nonrouters)
.def_readwrite("send_buffer_low_watermark", &session_settings::send_buffer_low_watermark)
.def_readwrite("send_buffer_watermark", &session_settings::send_buffer_watermark)
.def_readwrite("send_buffer_watermark_factor", &session_settings::send_buffer_watermark_factor)
.def_readwrite("choking_algorithm", &session_settings::choking_algorithm)
.def_readwrite("seed_choking_algorithm", &session_settings::seed_choking_algorithm)
.def_readwrite("use_parole_mode", &session_settings::use_parole_mode)
.def_readwrite("cache_size", &session_settings::cache_size)
.def_readwrite("cache_buffer_chunk_size", &session_settings::cache_buffer_chunk_size)
.def_readwrite("cache_expiry", &session_settings::cache_expiry)
.def_readwrite("use_read_cache", &session_settings::use_read_cache)
.def_readwrite("disk_io_write_mode", &session_settings::disk_io_write_mode)
.def_readwrite("disk_io_read_mode", &session_settings::disk_io_read_mode)
.def_readwrite("coalesce_reads", &session_settings::coalesce_reads)
.def_readwrite("coalesce_writes", &session_settings::coalesce_writes)
.def_readwrite("peer_tos", &session_settings::peer_tos)
.def_readwrite("active_downloads", &session_settings::active_downloads)
.def_readwrite("active_seeds", &session_settings::active_seeds)
.def_readwrite("active_dht_limit", &session_settings::active_dht_limit)
.def_readwrite("active_tracker_limit", &session_settings::active_tracker_limit)
.def_readwrite("active_lsd_limit", &session_settings::active_lsd_limit)
.def_readwrite("active_limit", &session_settings::active_limit)
.def_readwrite("auto_manage_prefer_seeds", &session_settings::auto_manage_prefer_seeds)
.def_readwrite("dont_count_slow_torrents", &session_settings::dont_count_slow_torrents)
.def_readwrite("auto_manage_interval", &session_settings::auto_manage_interval)
.def_readwrite("share_ratio_limit", &session_settings::share_ratio_limit)
.def_readwrite("seed_time_ratio_limit", &session_settings::seed_time_ratio_limit)
.def_readwrite("seed_time_limit", &session_settings::seed_time_limit)
.def_readwrite("peer_turnover_interval", &session_settings::peer_turnover_interval)
.def_readwrite("peer_turnover", &session_settings::peer_turnover)
.def_readwrite("peer_turnover_cutoff", &session_settings::peer_turnover_cutoff)
.def_readwrite("close_redundant_connections", &session_settings::close_redundant_connections)
.def_readwrite("auto_scrape_interval", &session_settings::auto_scrape_interval)
.def_readwrite("auto_scrape_min_interval", &session_settings::auto_scrape_min_interval)
.def_readwrite("max_peerlist_size", &session_settings::max_peerlist_size)
.def_readwrite("max_paused_peerlist_size", &session_settings::max_paused_peerlist_size)
.def_readwrite("min_announce_interval", &session_settings::min_announce_interval)
.def_readwrite("prioritize_partial_pieces", &session_settings::prioritize_partial_pieces)
.def_readwrite("auto_manage_startup", &session_settings::auto_manage_startup)
.def_readwrite("rate_limit_ip_overhead", &session_settings::rate_limit_ip_overhead)
.def_readwrite("announce_to_all_trackers", &session_settings::announce_to_all_trackers)
.def_readwrite("announce_to_all_tiers", &session_settings::announce_to_all_tiers)
.def_readwrite("prefer_udp_trackers", &session_settings::prefer_udp_trackers)
.def_readwrite("strict_super_seeding", &session_settings::strict_super_seeding)
.def_readwrite("seeding_piece_quota", &session_settings::seeding_piece_quota)
.def_readwrite("max_sparse_regions", &session_settings::max_sparse_regions)
.def_readwrite("lock_disk_cache", &session_settings::lock_disk_cache)
.def_readwrite("max_rejects", &session_settings::max_rejects)
.def_readwrite("recv_socket_buffer_size", &session_settings::recv_socket_buffer_size)
.def_readwrite("send_socket_buffer_size", &session_settings::send_socket_buffer_size)
.def_readwrite("optimize_hashing_for_speed", &session_settings::optimize_hashing_for_speed)
.def_readwrite("file_checks_delay_per_block", &session_settings::file_checks_delay_per_block)
.def_readwrite("disk_cache_algorithm", &session_settings::disk_cache_algorithm)
.def_readwrite("read_cache_line_size", &session_settings::read_cache_line_size)
.def_readwrite("write_cache_line_size", &session_settings::write_cache_line_size)
.def_readwrite("optimistic_disk_retry", &session_settings::optimistic_disk_retry)
.def_readwrite("disable_hash_checks", &session_settings::disable_hash_checks)
.def_readwrite("allow_reordered_disk_operations", &session_settings::allow_reordered_disk_operations)
.def_readwrite("allow_i2p_mixed", &session_settings::allow_i2p_mixed)
.def_readwrite("max_suggest_pieces", &session_settings::max_suggest_pieces)
.def_readwrite("drop_skipped_requests", &session_settings::drop_skipped_requests)
.def_readwrite("low_prio_disk", &session_settings::low_prio_disk)
.def_readwrite("local_service_announce_interval", &session_settings::local_service_announce_interval)
.def_readwrite("dht_announce_interval", &session_settings::dht_announce_interval)
.def_readwrite("udp_tracker_token_expiry", &session_settings::udp_tracker_token_expiry)
.def_readwrite("volatile_read_cache", &session_settings::volatile_read_cache)
.def_readwrite("guided_read_cache", &session_settings::guided_read_cache)
.def_readwrite("default_cache_min_age", &session_settings::default_cache_min_age)
.def_readwrite("num_optimistic_unchoke_slots", &session_settings::num_optimistic_unchoke_slots)
.def_readwrite("no_atime_storage", &session_settings::no_atime_storage)
.def_readwrite("default_est_reciprocation_rate", &session_settings::default_est_reciprocation_rate)
.def_readwrite("increase_est_reciprocation_rate", &session_settings::increase_est_reciprocation_rate)
.def_readwrite("decrease_est_reciprocation_rate", &session_settings::decrease_est_reciprocation_rate)
.def_readwrite("incoming_starts_queued_torrents", &session_settings::incoming_starts_queued_torrents)
.def_readwrite("report_true_downloaded", &session_settings::report_true_downloaded)
.def_readwrite("strict_end_game_mode", &session_settings::strict_end_game_mode)
.def_readwrite("broadcast_lsd", &session_settings::broadcast_lsd)
.def_readwrite("ignore_resume_timestamps", &session_settings::ignore_resume_timestamps)
.def_readwrite("no_recheck_incomplete_resume", &session_settings::no_recheck_incomplete_resume)
.def_readwrite("anonymous_mode", &session_settings::anonymous_mode)
.def_readwrite("force_proxy", &session_settings::force_proxy)
.def_readwrite("tick_interval", &session_settings::tick_interval)
.def_readwrite("report_web_seed_downloads", &session_settings::report_web_seed_downloads)
.def_readwrite("share_mode_target", &session_settings::share_mode_target)
.def_readwrite("rate_limit_utp", &session_settings::rate_limit_utp)
.def_readwrite("upload_rate_limit", &session_settings::upload_rate_limit)
.def_readwrite("download_rate_limit", &session_settings::download_rate_limit)
.def_readwrite("local_upload_rate_limit", &session_settings::local_upload_rate_limit)
.def_readwrite("local_download_rate_limit", &session_settings::local_download_rate_limit)
.def_readwrite("dht_upload_rate_limit", &session_settings::dht_upload_rate_limit)
.def_readwrite("unchoke_slots_limit", &session_settings::unchoke_slots_limit)
.def_readwrite("connections_limit", &session_settings::connections_limit)
.def_readwrite("utp_target_delay", &session_settings::utp_target_delay)
.def_readwrite("utp_gain_factor", &session_settings::utp_gain_factor)
.def_readwrite("utp_min_timeout", &session_settings::utp_min_timeout)
.def_readwrite("utp_syn_resends", &session_settings::utp_syn_resends)
.def_readwrite("utp_fin_resends", &session_settings::utp_fin_resends)
.def_readwrite("utp_num_resends", &session_settings::utp_num_resends)
.def_readwrite("utp_connect_timeout", &session_settings::utp_connect_timeout)
.def_readwrite("half_open_limit", &session_settings::half_open_limit)
.def_readwrite("utp_delayed_ack", &session_settings::utp_delayed_ack)
.def_readwrite("utp_dynamic_sock_buf", &session_settings::utp_dynamic_sock_buf)
.def_readwrite("utp_loss_multiplier", &session_settings::utp_loss_multiplier)
.def_readwrite("mixed_mode_algorithm", &session_settings::mixed_mode_algorithm)
.def_readwrite("listen_queue_size", &session_settings::listen_queue_size)
.def_readwrite("announce_double_nat", &session_settings::announce_double_nat)
.def_readwrite("torrent_connect_boost", &session_settings::torrent_connect_boost)
.def_readwrite("seeding_outgoing_connections", &session_settings::seeding_outgoing_connections)
.def_readwrite("no_connect_privileged_ports", &session_settings::no_connect_privileged_ports)
.def_readwrite("alert_queue_size", &session_settings::alert_queue_size)
.def_readwrite("max_metadata_size", &session_settings::max_metadata_size)
.def_readwrite("smooth_connects", &session_settings::smooth_connects)
.def_readwrite("always_send_user_agent", &session_settings::always_send_user_agent)
.def_readwrite("apply_ip_filter_to_trackers", &session_settings::apply_ip_filter_to_trackers)
.def_readwrite("read_job_every", &session_settings::read_job_every)
.def_readwrite("use_disk_read_ahead", &session_settings::use_disk_read_ahead)
.def_readwrite("lock_files", &session_settings::lock_files)
.def_readwrite("enable_outgoing_tcp", &session_settings::enable_outgoing_tcp)
.def_readwrite("enable_incoming_tcp", &session_settings::enable_incoming_tcp)
.def_readwrite("enable_outgoing_utp", &session_settings::enable_outgoing_utp)
.def_readwrite("enable_incoming_utp", &session_settings::enable_incoming_utp)
.def_readwrite("max_pex_peers", &session_settings::max_pex_peers)
.def_readwrite("ssl_listen", &session_settings::ssl_listen)
.def_readwrite("tracker_backoff", &session_settings::tracker_backoff)
.def_readwrite("ban_web_seeds", &session_settings::ban_web_seeds)
.def_readwrite("max_http_recv_buffer_size", &session_settings::max_http_recv_buffer_size)
.def_readwrite("support_share_mode", &session_settings::support_share_mode)
.def_readwrite("support_merkle_torrents", &session_settings::support_merkle_torrents)
.def_readwrite("report_redundant_bytes", &session_settings::report_redundant_bytes)
.def_readwrite("handshake_client_version", &session_settings::handshake_client_version)
.def_readwrite("use_disk_cache_pool", &session_settings::use_disk_cache_pool)
;
enum_<session_settings::disk_cache_algo_t>("disk_cache_algo_t")
.value("lru", session_settings::lru)
.value("largest_contiguous", session_settings::largest_contiguous)
.value("avoid_readback", session_settings::avoid_readback)
;
#endif // TORRENT_NO_DEPRECATE
enum_<settings_pack::choking_algorithm_t>("choking_algorithm_t")
.value("fixed_slots_choker", settings_pack::fixed_slots_choker)
#ifndef TORRENT_NO_DEPRECATE

View File

@ -183,17 +183,6 @@ class test_session(unittest.TestCase):
self.assertTrue(isinstance(a.values, dict))
self.assertTrue(len(a.values) > 0)
def test_deprecated_settings(self):
# this detects whether libtorrent was built with deprecated APIs
if hasattr(lt, 'version'):
s = lt.session({'enable_dht': False})
sett = lt.session_settings()
sett.num_want = 10;
s.set_settings(sett)
s.set_settings({'num_want': 33})
self.assertEqual(s.get_settings()['num_want'], 33)
def test_apply_settings(self):
s = lt.session({'enable_dht': False})

View File

@ -55,7 +55,6 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/debug.hpp"
#include "libtorrent/piece_block_progress.hpp"
#include "libtorrent/ip_filter.hpp"
#include "libtorrent/session_settings.hpp"
#include "libtorrent/session_status.hpp"
#include "libtorrent/add_torrent_params.hpp"
#include "libtorrent/stat.hpp"
@ -82,6 +81,10 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/aux_/portmap.hpp"
#include "libtorrent/aux_/lsd.hpp"
#ifndef TORRENT_NO_DEPRECATE
#include "libtorrent/session_settings.hpp"
#endif
#if TORRENT_COMPLETE_TYPES_REQUIRED
#include "libtorrent/peer_connection.hpp"
#endif
@ -309,11 +312,6 @@ namespace libtorrent
void close_connection(peer_connection* p, error_code const& ec) override;
#ifndef TORRENT_NO_DEPRECATE
void set_settings(libtorrent::session_settings const& s);
libtorrent::session_settings deprecated_settings() const;
#endif
void apply_settings_pack(std::shared_ptr<settings_pack> pack) override;
void apply_settings_pack_impl(settings_pack const& pack
, bool const init = false);

View File

@ -40,7 +40,7 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/io_service.hpp"
#include "libtorrent/settings_pack.hpp"
#include "libtorrent/session_handle.hpp"
#include "libtorrent/session_settings.hpp"
#include "libtorrent/session_settings.hpp" // for dht_settings
#include "libtorrent/kademlia/dht_state.hpp"
#include "libtorrent/kademlia/dht_storage.hpp"
@ -79,13 +79,6 @@ namespace libtorrent
TORRENT_EXPORT void min_memory_usage(settings_pack& set);
TORRENT_EXPORT void high_performance_seed(settings_pack& set);
#ifndef TORRENT_NO_DEPRECATE
TORRENT_DEPRECATED
TORRENT_EXPORT session_settings min_memory_usage();
TORRENT_DEPRECATED
TORRENT_EXPORT session_settings high_performance_seed();
#endif
#ifndef TORRENT_CFG
#error TORRENT_CFG is not defined!
#endif

View File

@ -41,11 +41,11 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/alert.hpp" // alert::error_notification
#include "libtorrent/peer_class.hpp"
#include "libtorrent/peer_class_type_filter.hpp"
#include "libtorrent/session_settings.hpp"
#include "libtorrent/kademlia/dht_storage.hpp"
#ifndef TORRENT_NO_DEPRECATE
#include "libtorrent/session_settings.hpp"
#include <deque>
#endif
@ -776,15 +776,6 @@ namespace libtorrent
void remove_torrent(const torrent_handle& h, int options = 0);
#ifndef TORRENT_NO_DEPRECATE
// deprecated in aio-branch
// Sets the session settings and the packet encryption settings
// respectively. See session_settings and pe_settings for more
// information on available options.
TORRENT_DEPRECATED
void set_settings(session_settings const& s);
TORRENT_DEPRECATED
session_settings settings() const;
// deprecated in libtorrent 1.1. use settings_pack instead
TORRENT_DEPRECATED
void set_pe_settings(pe_settings const& settings);

File diff suppressed because it is too large Load Diff

View File

@ -248,35 +248,6 @@ namespace libtorrent
set.set_bool(settings_pack::use_disk_cache_pool, true);
}
#ifndef TORRENT_NO_DEPRECATE
// this function returns a session_settings object
// which will optimize libtorrent for minimum memory
// usage, with no consideration of performance.
session_settings min_memory_usage()
{
aux::session_settings def;
initialize_default_settings(def);
settings_pack pack;
min_memory_usage(pack);
apply_pack(&pack, def, nullptr);
session_settings ret;
load_struct_from_settings(def, ret);
return ret;
}
session_settings high_performance_seed()
{
aux::session_settings def;
initialize_default_settings(def);
settings_pack pack;
high_performance_seed(pack);
apply_pack(&pack, def, nullptr);
session_settings ret;
load_struct_from_settings(def, ret);
return ret;
}
#endif
#ifndef TORRENT_CFG
#error TORRENT_CFG is not defined!
#endif
@ -426,18 +397,6 @@ namespace libtorrent
return session_proxy(m_io_service, m_thread, m_impl);
}
#ifndef TORRENT_NO_DEPRECATE
session_settings::session_settings(std::string const& user_agent_)
{
aux::session_settings def;
initialize_default_settings(def);
def.set_str(settings_pack::user_agent, user_agent_);
load_struct_from_settings(def, *this);
}
session_settings::~session_settings() = default;
#endif // TORRENT_NO_DEPRECATE
session_proxy::session_proxy() = default;
session_proxy::session_proxy(std::shared_ptr<io_service> ios
, std::shared_ptr<std::thread> t

View File

@ -797,16 +797,6 @@ namespace libtorrent
}
#ifndef TORRENT_NO_DEPRECATE
void session_handle::set_settings(session_settings const& s)
{
async_call(&session_impl::set_settings, s);
}
session_settings session_handle::settings() const
{
return sync_call_ret<session_settings>(&session_impl::deprecated_settings);
}
void session_handle::set_pe_settings(pe_settings const& r)
{
settings_pack p;

View File

@ -1453,24 +1453,6 @@ namespace aux {
}
}
#ifndef TORRENT_NO_DEPRECATE
void session_impl::set_settings(libtorrent::session_settings const& s)
{
INVARIANT_CHECK;
TORRENT_ASSERT(is_single_thread());
std::shared_ptr<settings_pack> p = load_pack_from_struct(m_settings, s);
apply_settings_pack(p);
}
libtorrent::session_settings session_impl::deprecated_settings() const
{
libtorrent::session_settings ret;
load_struct_from_settings(m_settings, ret);
return ret;
}
#endif
// TODO: 3 try to remove these functions. They are misleading and not very
// useful. Anything using these should probably be fixed to do something more
// multi-homed friendly

View File

@ -65,11 +65,6 @@ namespace libtorrent
// if present, this function is called when the setting is changed
void (aux::session_impl::*fun)();
char const *default_value;
#ifndef TORRENT_NO_DEPRECATE
// offset into session_settings, used to map
// settings to the deprecated settings struct
int offset;
#endif
};
struct int_setting_entry_t
@ -79,11 +74,6 @@ namespace libtorrent
// if present, this function is called when the setting is changed
void (aux::session_impl::*fun)();
int default_value;
#ifndef TORRENT_NO_DEPRECATE
// offset into session_settings, used to map
// settings to the deprecated settings struct
int offset;
#endif
};
struct bool_setting_entry_t
@ -93,30 +83,15 @@ namespace libtorrent
// if present, this function is called when the setting is changed
void (aux::session_impl::*fun)();
bool default_value;
#ifndef TORRENT_NO_DEPRECATE
// offset into session_settings, used to map
// settings to the deprecated settings struct
int offset;
#endif
};
// SET_NOPREV - this is used for new settings that don't exist in the
// deprecated session_settings.
#ifdef TORRENT_NO_DEPRECATE
#define SET(name, default_value, fun) { #name, fun, default_value }
#define SET_NOPREV(name, default_value, fun) { #name, fun, default_value }
#define DEPRECATED_SET(name, default_value, fun) { "", nullptr, 0 }
#else
#define SET(name, default_value, fun) { #name, fun, default_value, offsetof(libtorrent::session_settings, name) }
#define SET_NOPREV(name, default_value, fun) { #name, fun, default_value, 0 }
#define DEPRECATED_SET(name, default_value, fun) { #name, fun, default_value, offsetof(libtorrent::session_settings, name) }
#endif
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Winvalid-offsetof"
#ifndef TORRENT_NO_DEPRECATE
#define DEPRECATED_SET(name, default_value, fun) { #name, fun, default_value }
#else
#define DEPRECATED_SET(name, default_value, fun) { "", nullptr, 0 }
#endif
namespace {
@ -129,18 +104,18 @@ namespace libtorrent
SET(announce_ip, nullptr, nullptr),
SET(mmap_cache, nullptr, nullptr),
SET(handshake_client_version, nullptr, nullptr),
SET_NOPREV(outgoing_interfaces, "", &session_impl::update_outgoing_interfaces),
SET(outgoing_interfaces, "", &session_impl::update_outgoing_interfaces),
#if !TORRENT_USE_IPV6
SET_NOPREV(listen_interfaces, "0.0.0.0:6881", &session_impl::update_listen_interfaces),
SET(listen_interfaces, "0.0.0.0:6881", &session_impl::update_listen_interfaces),
#else
SET_NOPREV(listen_interfaces, "0.0.0.0:6881,[::]:6881", &session_impl::update_listen_interfaces),
SET(listen_interfaces, "0.0.0.0:6881,[::]:6881", &session_impl::update_listen_interfaces),
#endif
SET_NOPREV(proxy_hostname, "", &session_impl::update_proxy),
SET_NOPREV(proxy_username, "", &session_impl::update_proxy),
SET_NOPREV(proxy_password, "", &session_impl::update_proxy),
SET_NOPREV(i2p_hostname, "", &session_impl::update_i2p_bridge),
SET_NOPREV(peer_fingerprint, "-LT1200-", &session_impl::update_peer_fingerprint),
SET_NOPREV(dht_bootstrap_nodes, "dht.libtorrent.org:25401", &session_impl::update_dht_bootstrap_nodes)
SET(proxy_hostname, "", &session_impl::update_proxy),
SET(proxy_username, "", &session_impl::update_proxy),
SET(proxy_password, "", &session_impl::update_proxy),
SET(i2p_hostname, "", &session_impl::update_i2p_bridge),
SET(peer_fingerprint, "-LT1200-", &session_impl::update_peer_fingerprint),
SET(dht_bootstrap_nodes, "dht.libtorrent.org:25401", &session_impl::update_dht_bootstrap_nodes)
};
bool_setting_entry_t bool_settings[settings_pack::num_bool_settings] =
@ -196,23 +171,23 @@ namespace libtorrent
SET(lock_files, false, nullptr),
DEPRECATED_SET(contiguous_recv_buffer, true, nullptr),
SET(ban_web_seeds, true, nullptr),
SET_NOPREV(allow_partial_disk_writes, true, nullptr),
SET(allow_partial_disk_writes, true, nullptr),
SET(force_proxy, false, &session_impl::update_force_proxy),
SET(support_share_mode, true, nullptr),
SET(support_merkle_torrents, true, nullptr),
SET(report_redundant_bytes, true, nullptr),
SET_NOPREV(listen_system_port_fallback, true, nullptr),
SET(listen_system_port_fallback, true, nullptr),
SET(use_disk_cache_pool, true, nullptr),
SET_NOPREV(announce_crypto_support, true, nullptr),
SET_NOPREV(enable_upnp, true, &session_impl::update_upnp),
SET_NOPREV(enable_natpmp, true, &session_impl::update_natpmp),
SET_NOPREV(enable_lsd, true, &session_impl::update_lsd),
SET_NOPREV(enable_dht, true, &session_impl::update_dht),
SET_NOPREV(prefer_rc4, false, nullptr),
SET_NOPREV(proxy_hostnames, true, nullptr),
SET_NOPREV(proxy_peer_connections, true, nullptr),
SET_NOPREV(auto_sequential, true, &session_impl::update_auto_sequential),
SET_NOPREV(proxy_tracker_connections, true, nullptr),
SET(announce_crypto_support, true, nullptr),
SET(enable_upnp, true, &session_impl::update_upnp),
SET(enable_natpmp, true, &session_impl::update_natpmp),
SET(enable_lsd, true, &session_impl::update_lsd),
SET(enable_dht, true, &session_impl::update_dht),
SET(prefer_rc4, false, nullptr),
SET(proxy_hostnames, true, nullptr),
SET(proxy_peer_connections, true, nullptr),
SET(auto_sequential, true, &session_impl::update_auto_sequential),
SET(proxy_tracker_connections, true, nullptr),
};
int_setting_entry_t int_settings[settings_pack::num_int_settings] =
@ -260,12 +235,12 @@ namespace libtorrent
SET(peer_tos, 0, &session_impl::update_peer_tos),
SET(active_downloads, 3, &session_impl::trigger_auto_manage),
SET(active_seeds, 5, &session_impl::trigger_auto_manage),
SET_NOPREV(active_checking, 1, &session_impl::trigger_auto_manage),
SET(active_checking, 1, &session_impl::trigger_auto_manage),
SET(active_dht_limit, 88, nullptr),
SET(active_tracker_limit, 1600, nullptr),
SET(active_lsd_limit, 60, nullptr),
SET(active_limit, 15, &session_impl::trigger_auto_manage),
SET_NOPREV(active_loaded_limit, 100, &session_impl::trigger_auto_manage),
SET(active_loaded_limit, 100, &session_impl::trigger_auto_manage),
SET(auto_manage_interval, 30, nullptr),
SET(seed_time_limit, 24 * 60 * 60, nullptr),
SET(auto_scrape_interval, 1800, nullptr),
@ -278,7 +253,7 @@ namespace libtorrent
SET(max_rejects, 50, nullptr),
SET(recv_socket_buffer_size, 0, &session_impl::update_socket_buffer_size),
SET(send_socket_buffer_size, 0, &session_impl::update_socket_buffer_size),
SET_NOPREV(max_peer_recv_buffer_size, 2 * 1024 * 1024, nullptr),
SET(max_peer_recv_buffer_size, 2 * 1024 * 1024, nullptr),
SET(file_checks_delay_per_block, 0, nullptr),
SET(read_cache_line_size, 32, nullptr),
SET(write_cache_line_size, 16, nullptr),
@ -326,31 +301,28 @@ namespace libtorrent
SET(network_threads, 0, nullptr),
DEPRECATED_SET(ssl_listen, 0, &session_impl::update_ssl_listen),
SET(tracker_backoff, 250, nullptr),
SET_NOPREV(share_ratio_limit, 200, nullptr),
SET_NOPREV(seed_time_ratio_limit, 700, nullptr),
SET_NOPREV(peer_turnover, 4, nullptr),
SET_NOPREV(peer_turnover_cutoff, 90, nullptr),
SET(share_ratio_limit, 200, nullptr),
SET(seed_time_ratio_limit, 700, nullptr),
SET(peer_turnover, 4, nullptr),
SET(peer_turnover_cutoff, 90, nullptr),
SET(peer_turnover_interval, 300, nullptr),
SET_NOPREV(connect_seed_every_n_download, 10, nullptr),
SET(connect_seed_every_n_download, 10, nullptr),
SET(max_http_recv_buffer_size, 4*1024*204, nullptr),
SET_NOPREV(max_retry_port_bind, 10, nullptr),
SET_NOPREV(alert_mask, alert::error_notification, &session_impl::update_alert_mask),
SET_NOPREV(out_enc_policy, settings_pack::pe_enabled, nullptr),
SET_NOPREV(in_enc_policy, settings_pack::pe_enabled, nullptr),
SET_NOPREV(allowed_enc_level, settings_pack::pe_both, nullptr),
SET(max_retry_port_bind, 10, nullptr),
SET(alert_mask, alert::error_notification, &session_impl::update_alert_mask),
SET(out_enc_policy, settings_pack::pe_enabled, nullptr),
SET(in_enc_policy, settings_pack::pe_enabled, nullptr),
SET(allowed_enc_level, settings_pack::pe_both, nullptr),
SET(inactive_down_rate, 2048, nullptr),
SET(inactive_up_rate, 2048, nullptr),
SET_NOPREV(proxy_type, settings_pack::none, &session_impl::update_proxy),
SET_NOPREV(proxy_port, 0, &session_impl::update_proxy),
SET_NOPREV(i2p_port, 0, &session_impl::update_i2p_bridge),
SET_NOPREV(cache_size_volatile, 256, nullptr)
SET(proxy_type, settings_pack::none, &session_impl::update_proxy),
SET(proxy_port, 0, &session_impl::update_proxy),
SET(i2p_port, 0, &session_impl::update_i2p_bridge),
SET(cache_size_volatile, 256, nullptr)
};
#undef SET
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
#undef SET_DEPRECATED
} // anonymous namespace
@ -459,96 +431,6 @@ namespace libtorrent
}
}
#ifndef TORRENT_NO_DEPRECATE
#include "libtorrent/aux_/disable_warnings_push.hpp"
std::shared_ptr<settings_pack> load_pack_from_struct(
aux::session_settings const& current, session_settings const& s)
{
std::shared_ptr<settings_pack> p = std::make_shared<settings_pack>();
for (int i = 0; i < settings_pack::num_string_settings; ++i)
{
if (str_settings[i].offset == 0) continue;
std::string& val = *(std::string*)(((char*)&s) + str_settings[i].offset);
int const setting_name = settings_pack::string_type_base + i;
if (val == current.get_str(setting_name)) continue;
p->set_str(setting_name, val);
}
for (int i = 0; i < settings_pack::num_int_settings; ++i)
{
if (int_settings[i].offset == 0) continue;
int& val = *(int*)(((char*)&s) + int_settings[i].offset);
int const setting_name = settings_pack::int_type_base + i;
if (val == current.get_int(setting_name)) continue;
p->set_int(setting_name, val);
}
for (int i = 0; i < settings_pack::num_bool_settings; ++i)
{
if (bool_settings[i].offset == 0) continue;
bool& val = *(bool*)(((char*)&s) + bool_settings[i].offset);
int const setting_name = settings_pack::bool_type_base + i;
if (val == current.get_bool(setting_name)) continue;
p->set_bool(setting_name, val);
}
// special case for deprecated float values
int val = current.get_int(settings_pack::share_ratio_limit);
if (fabs(s.share_ratio_limit - float(val) / 100.f) > 0.001f)
p->set_int(settings_pack::share_ratio_limit, s.share_ratio_limit * 100);
val = current.get_int(settings_pack::seed_time_ratio_limit);
if (fabs(s.seed_time_ratio_limit - float(val) / 100.f) > 0.001f)
p->set_int(settings_pack::seed_time_ratio_limit, s.seed_time_ratio_limit * 100);
val = current.get_int(settings_pack::peer_turnover);
if (fabs(s.peer_turnover - float(val) / 100.f) > 0.001)
p->set_int(settings_pack::peer_turnover, s.peer_turnover * 100);
val = current.get_int(settings_pack::peer_turnover_cutoff);
if (fabs(s.peer_turnover_cutoff - float(val) / 100.f) > 0.001)
p->set_int(settings_pack::peer_turnover_cutoff, s.peer_turnover_cutoff * 100);
return p;
}
void load_struct_from_settings(aux::session_settings const& current, session_settings& ret)
{
for (int i = 0; i < settings_pack::num_string_settings; ++i)
{
if (str_settings[i].offset == 0) continue;
std::string& val = *(std::string*)(((char*)&ret) + str_settings[i].offset);
val = current.get_str(settings_pack::string_type_base + i);
}
for (int i = 0; i < settings_pack::num_int_settings; ++i)
{
if (int_settings[i].offset == 0) continue;
int& val = *(int*)(((char*)&ret) + int_settings[i].offset);
val = current.get_int(settings_pack::int_type_base + i);
}
for (int i = 0; i < settings_pack::num_bool_settings; ++i)
{
if (bool_settings[i].offset == 0) continue;
bool& val = *(bool*)(((char*)&ret) + bool_settings[i].offset);
val = current.get_bool(settings_pack::bool_type_base + i);
}
// special case for deprecated float values
ret.share_ratio_limit = float(current.get_int(settings_pack::share_ratio_limit)) / 100.f;
ret.seed_time_ratio_limit = float(current.get_int(settings_pack::seed_time_ratio_limit)) / 100.f;
ret.peer_turnover = float(current.get_int(settings_pack::peer_turnover)) / 100.f;
ret.peer_turnover_cutoff = float(current.get_int(settings_pack::peer_turnover_cutoff)) / 100.f;
}
#include "libtorrent/aux_/disable_warnings_pop.hpp"
#endif // TORRENT_NO_DEPRECATE
void initialize_default_settings(aux::session_settings& s)
{
for (int i = 0; i < settings_pack::num_string_settings; ++i)

View File

@ -95,7 +95,7 @@ TORRENT_TEST(test_name)
{
#define TEST_NAME(n) \
TEST_EQUAL(setting_by_name(#n), settings_pack:: n) \
TEST_CHECK(strcmp(name_for_setting(settings_pack:: n), #n) == 0)
TEST_EQUAL(name_for_setting(settings_pack:: n), std::string(#n))
#ifndef TORRENT_NO_DEPRECATE
TEST_NAME(contiguous_recv_buffer);