From 12cbcfd380bf5ded311674204762ef1db873da20 Mon Sep 17 00:00:00 2001 From: arvidn Date: Tue, 20 Nov 2018 15:44:55 +0100 Subject: [PATCH] make settings_pack enums specify a narrower underlying type and remove deprecated, internal enums --- bindings/python/src/session_settings.cpp | 14 ++---- include/libtorrent/aux_/proxy_settings.hpp | 53 ++-------------------- include/libtorrent/settings_pack.hpp | 18 ++++---- simulation/make_proxy_settings.hpp | 2 +- src/proxy_settings.cpp | 2 +- src/session_handle.cpp | 2 +- 6 files changed, 18 insertions(+), 73 deletions(-) diff --git a/bindings/python/src/session_settings.cpp b/bindings/python/src/session_settings.cpp index 5c7b4d9cf..e9c6aab8e 100644 --- a/bindings/python/src/session_settings.cpp +++ b/bindings/python/src/session_settings.cpp @@ -52,7 +52,7 @@ void bind_session_settings() .value("enabled", settings_pack::pe_enabled) .value("disabled", settings_pack::pe_disabled) #endif - ; + ; enum_("enc_level") .value("pe_rc4", settings_pack::pe_rc4) @@ -65,7 +65,7 @@ void bind_session_settings() #endif ; - enum_("proxy_type_t") + scope s = enum_("proxy_type_t") .value("none", settings_pack::none) .value("socks4", settings_pack::socks4) .value("socks5", settings_pack::socks5) @@ -76,15 +76,7 @@ void bind_session_settings() ; #if TORRENT_ABI_VERSION == 1 - enum_("proxy_type") - .value("none", proxy_settings::none) - .value("socks4", proxy_settings::socks4) - .value("socks5", proxy_settings::socks5) - .value("socks5_pw", proxy_settings::socks5_pw) - .value("http", proxy_settings::http) - .value("http_pw", proxy_settings::http_pw) - .value("i2p_proxy", proxy_settings::i2p_proxy) - ; + scope().attr("proxy_type") = s; class_("proxy_settings") .def_readwrite("hostname", &proxy_settings::hostname) diff --git a/include/libtorrent/aux_/proxy_settings.hpp b/include/libtorrent/aux_/proxy_settings.hpp index 05aaca1ff..dde015af5 100644 --- a/include/libtorrent/aux_/proxy_settings.hpp +++ b/include/libtorrent/aux_/proxy_settings.hpp @@ -34,6 +34,7 @@ POSSIBILITY OF SUCH DAMAGE. #define TORRENT_PROXY_SETTINGS_HPP_INCLUDED #include "libtorrent/config.hpp" +#include "libtorrent/settings_pack.hpp" #include @@ -67,57 +68,9 @@ namespace aux { std::string username; std::string password; -#if TORRENT_ABI_VERSION == 1 - // the type of proxy to use. Assign one of these to the - // proxy_settings::type field. - enum proxy_type - { - // This is the default, no proxy server is used, all other fields are - // ignored. - none, - - // The server is assumed to be a `SOCKS4 server`_ that requires a - // username. - // - // .. _`SOCKS4 server`: http://www.ufasoft.com/doc/socks4_protocol.htm - socks4, - - // The server is assumed to be a SOCKS5 server (`RFC 1928`_) that does - // not require any authentication. The username and password are - // ignored. - // - // .. _`RFC 1928`: http://www.faqs.org/rfcs/rfc1928.html - socks5, - - // The server is assumed to be a SOCKS5 server that supports plain - // text username and password authentication (`RFC 1929`_). The - // username and password specified may be sent to the proxy if it - // requires. - // - // .. _`RFC 1929`: http://www.faqs.org/rfcs/rfc1929.html - socks5_pw, - - // The server is assumed to be an HTTP proxy. If the transport used - // for the connection is non-HTTP, the server is assumed to support - // the CONNECT_ method. i.e. for web seeds and HTTP trackers, a plain - // proxy will suffice. The proxy is assumed to not require - // authorization. The username and password will not be used. - // - // .. _CONNECT: http://tools.ietf.org/html/draft-luotonen-web-proxy-tunneling-01 - http, - - // The server is assumed to be an HTTP proxy that requires user - // authorization. The username and password will be sent to the proxy. - http_pw, - - // route through an i2p SAM proxy - i2p_proxy - }; -#endif - - // tells libtorrent what kind of proxy server it is. See proxy_type + // tells libtorrent what kind of proxy server it is. See proxy_type_t // enum for options - std::uint8_t type = 0; + settings_pack::proxy_type_t type = settings_pack::none; // the port the proxy server is running on std::uint16_t port = 0; diff --git a/include/libtorrent/settings_pack.hpp b/include/libtorrent/settings_pack.hpp index cc25fe66f..78bd4306d 100644 --- a/include/libtorrent/settings_pack.hpp +++ b/include/libtorrent/settings_pack.hpp @@ -1668,30 +1668,30 @@ namespace libtorrent { max_int_setting_internal }; - enum settings_counts_t + enum settings_counts_t : std::uint8_t { num_string_settings = max_string_setting_internal - string_type_base, num_bool_settings = max_bool_setting_internal - bool_type_base, num_int_settings = max_int_setting_internal - int_type_base }; - enum suggest_mode_t { no_piece_suggestions = 0, suggest_read_cache = 1 }; + enum suggest_mode_t : std::uint8_t { no_piece_suggestions = 0, suggest_read_cache = 1 }; - enum choking_algorithm_t + enum choking_algorithm_t : std::uint8_t { fixed_slots_choker = 0, rate_based_choker = 2, bittyrant_choker = 3 }; - enum seed_choking_algorithm_t + enum seed_choking_algorithm_t : std::uint8_t { round_robin, fastest_upload, anti_leech }; - enum io_buffer_mode_t + enum io_buffer_mode_t : std::uint8_t { enable_os_cache = 0, #if TORRENT_ABI_VERSION == 1 @@ -1702,7 +1702,7 @@ namespace libtorrent { disable_os_cache = 2 }; - enum bandwidth_mixed_algo_t + enum bandwidth_mixed_algo_t : std::uint8_t { // disables the mixed mode bandwidth balancing prefer_tcp = 0, @@ -1714,7 +1714,7 @@ namespace libtorrent { // the encoding policy options for use with // settings_pack::out_enc_policy and settings_pack::in_enc_policy. - enum enc_policy + enum enc_policy : std::uint8_t { // Only encrypted connections are allowed. Incoming connections that // are not encrypted are closed and if the encrypted outgoing @@ -1733,7 +1733,7 @@ namespace libtorrent { // the encryption levels, to be used with // settings_pack::allowed_enc_level. - enum enc_level + enum enc_level : std::uint8_t { // use only plaintext encryption pe_plaintext = 1, @@ -1743,7 +1743,7 @@ namespace libtorrent { pe_both = 3 }; - enum proxy_type_t + enum proxy_type_t : std::uint8_t { // This is the default, no proxy server is used, all other fields are // ignored. diff --git a/simulation/make_proxy_settings.hpp b/simulation/make_proxy_settings.hpp index 57c79ec8e..f073dabad 100644 --- a/simulation/make_proxy_settings.hpp +++ b/simulation/make_proxy_settings.hpp @@ -41,7 +41,7 @@ inline lt::aux::proxy_settings make_proxy_settings( using namespace lt; aux::proxy_settings ps; - ps.type = std::uint8_t(proxy_type); + ps.type = proxy_type; ps.proxy_hostnames = false; // this IP and ports are specific to test_http_connection.cpp if (proxy_type != settings_pack::none) diff --git a/src/proxy_settings.cpp b/src/proxy_settings.cpp index 39cbdd806..2af4af013 100644 --- a/src/proxy_settings.cpp +++ b/src/proxy_settings.cpp @@ -44,7 +44,7 @@ void init(proxy_settings& p, Settings const& sett) p.hostname = sett.get_str(settings_pack::proxy_hostname); p.username = sett.get_str(settings_pack::proxy_username); p.password = sett.get_str(settings_pack::proxy_password); - p.type = std::uint8_t(sett.get_int(settings_pack::proxy_type)); + p.type = settings_pack::proxy_type_t(sett.get_int(settings_pack::proxy_type)); p.port = std::uint16_t(sett.get_int(settings_pack::proxy_port)); p.proxy_hostnames = sett.get_bool(settings_pack::proxy_hostnames); p.proxy_peer_connections = sett.get_bool( diff --git a/src/session_handle.cpp b/src/session_handle.cpp index 0c289e3c2..7aba79616 100644 --- a/src/session_handle.cpp +++ b/src/session_handle.cpp @@ -1051,7 +1051,7 @@ namespace { // setting settings_pack pack; pack.set_bool(settings_pack::proxy_tracker_connections - , s.type != aux::proxy_settings::none); + , s.type != settings_pack::none); apply_settings(pack); }