remove disable-dht build configuration from the public API (simplify linking)

This commit is contained in:
Arvid Norberg 2013-04-09 01:04:43 +00:00
parent 4395437c3b
commit df4fcaaeed
11 changed files with 53 additions and 46 deletions

10
Jamfile
View File

@ -365,9 +365,9 @@ feature.compose <logging>default : <define>TORRENT_LOGGING ;
feature.compose <logging>errors : <define>TORRENT_ERROR_LOGGING ; feature.compose <logging>errors : <define>TORRENT_ERROR_LOGGING ;
feature.compose <logging>verbose : <define>TORRENT_VERBOSE_LOGGING ; feature.compose <logging>verbose : <define>TORRENT_VERBOSE_LOGGING ;
feature dht-support : on off logging : composite propagated link-incompatible ; feature dht : on off logging : composite propagated link-incompatible ;
feature.compose <dht-support>off : <define>TORRENT_DISABLE_DHT ; feature.compose <dht>off : <define>TORRENT_DISABLE_DHT ;
feature.compose <dht-support>logging : <define>TORRENT_DHT_VERBOSE_LOGGING ; feature.compose <dht>logging : <define>TORRENT_DHT_VERBOSE_LOGGING ;
feature encryption : tommath off openssl gcrypt : composite propagated link-incompatible ; feature encryption : tommath off openssl gcrypt : composite propagated link-incompatible ;
feature.compose <encryption>openssl : <define>TORRENT_USE_OPENSSL ; feature.compose <encryption>openssl : <define>TORRENT_USE_OPENSSL ;
@ -620,8 +620,8 @@ lib torrent
<link>shared:<define>BOOST_ASIO_SOURCE <link>shared:<define>BOOST_ASIO_SOURCE
<link>shared:<define>BOOST_SYSTEM_SOURCE <link>shared:<define>BOOST_SYSTEM_SOURCE
<dht-support>on:<source>src/kademlia/$(KADEMLIA_SOURCES).cpp <dht>on:<source>src/kademlia/$(KADEMLIA_SOURCES).cpp
<dht-support>logging:<source>src/kademlia/$(KADEMLIA_SOURCES).cpp <dht>logging:<source>src/kademlia/$(KADEMLIA_SOURCES).cpp
<conditional>@building <conditional>@building
<boost>system:<cxxflags>$(CXXFLAGS) <boost>system:<cxxflags>$(CXXFLAGS)

View File

@ -254,7 +254,7 @@ Build features:
| | * ``verbose`` - verbose peer wire logging. | | | * ``verbose`` - verbose peer wire logging. |
| | * ``errors`` - like verbose, but limited to errors.| | | * ``errors`` - like verbose, but limited to errors.|
+--------------------------+----------------------------------------------------+ +--------------------------+----------------------------------------------------+
| ``dht-support`` | * ``on`` - build with support for tracker less | | ``dht`` | * ``on`` - build with support for tracker less |
| | torrents and DHT support. | | | torrents and DHT support. |
| | * ``logging`` - build with DHT support and verbose | | | * ``logging`` - build with DHT support and verbose |
| | logging of the DHT protocol traffic. | | | logging of the DHT protocol traffic. |

View File

@ -63,12 +63,6 @@ POSSIBILITY OF SUCH DAMAGE.
#define TORRENT_CFG_IPV6 noipv_- #define TORRENT_CFG_IPV6 noipv_-
#endif #endif
#ifdef TORRENT_DISABLE_DHT
#define TORRENT_CFG_DHT nodht_
#else
#define TORRENT_CFG_DHT dht_
#endif
#ifdef TORRENT_DISABLE_POOL_ALLOCATORS #ifdef TORRENT_DISABLE_POOL_ALLOCATORS
#define TORRENT_CFG_POOL nopools_ #define TORRENT_CFG_POOL nopools_
#else #else
@ -105,8 +99,7 @@ POSSIBILITY OF SUCH DAMAGE.
BOOST_PP_CAT(TORRENT_CFG_POOL, \ BOOST_PP_CAT(TORRENT_CFG_POOL, \
BOOST_PP_CAT(TORRENT_CFG_LOG, \ BOOST_PP_CAT(TORRENT_CFG_LOG, \
BOOST_PP_CAT(TORRENT_CFG_DEPR, \ BOOST_PP_CAT(TORRENT_CFG_DEPR, \
BOOST_PP_CAT(TORRENT_CFG_DHT, \ TORRENT_CFG_EXT)))))
TORRENT_CFG_EXT))))))
#define TORRENT_CFG_STRING BOOST_PP_STRINGIZE(TORRENT_CFG) #define TORRENT_CFG_STRING BOOST_PP_STRINGIZE(TORRENT_CFG)

View File

@ -264,10 +264,12 @@ namespace libtorrent
void remove_feed(feed_handle h); void remove_feed(feed_handle h);
void get_feeds(std::vector<feed_handle>& f) const; void get_feeds(std::vector<feed_handle>& f) const;
#ifndef TORRENT_DISABLE_DHT
void start_dht(); void start_dht();
void stop_dht(); void stop_dht();
void set_dht_settings(dht_settings const& settings); void set_dht_settings(dht_settings const& settings);
void add_dht_node(std::pair<std::string, int> const& node);
void add_dht_router(std::pair<std::string, int> const& node);
bool is_dht_running() const;
#ifndef TORRENT_NO_DEPRECATE #ifndef TORRENT_NO_DEPRECATE
// deprecated in 0.15 // deprecated in 0.15
// use save_state and load_state instead // use save_state and load_state instead
@ -276,10 +278,6 @@ namespace libtorrent
TORRENT_DEPRECATED_PREFIX TORRENT_DEPRECATED_PREFIX
void start_dht(entry const& startup_state) TORRENT_DEPRECATED; void start_dht(entry const& startup_state) TORRENT_DEPRECATED;
#endif #endif
void add_dht_node(std::pair<std::string, int> const& node);
void add_dht_router(std::pair<std::string, int> const& node);
bool is_dht_running() const;
#endif
#ifndef TORRENT_DISABLE_ENCRYPTION #ifndef TORRENT_DISABLE_ENCRYPTION
void set_pe_settings(pe_settings const& settings); void set_pe_settings(pe_settings const& settings);
@ -408,12 +406,10 @@ namespace libtorrent
TORRENT_DEPRECATED_PREFIX TORRENT_DEPRECATED_PREFIX
proxy_settings tracker_proxy() const TORRENT_DEPRECATED; proxy_settings tracker_proxy() const TORRENT_DEPRECATED;
#ifndef TORRENT_DISABLE_DHT
TORRENT_DEPRECATED_PREFIX TORRENT_DEPRECATED_PREFIX
void set_dht_proxy(proxy_settings const& s) TORRENT_DEPRECATED; void set_dht_proxy(proxy_settings const& s) TORRENT_DEPRECATED;
TORRENT_DEPRECATED_PREFIX TORRENT_DEPRECATED_PREFIX
proxy_settings dht_proxy() const TORRENT_DEPRECATED; proxy_settings dht_proxy() const TORRENT_DEPRECATED;
#endif
#endif // TORRENT_NO_DEPRECATE #endif // TORRENT_NO_DEPRECATE
#if TORRENT_USE_I2P #if TORRENT_USE_I2P

View File

@ -286,11 +286,9 @@ namespace libtorrent
// within this time, the peer is disconnected. // within this time, the peer is disconnected.
int handshake_timeout; int handshake_timeout;
#ifndef TORRENT_DISABLE_DHT
// while this is true, the dht will not be used unless the // while this is true, the dht will not be used unless the
// tracker is online // tracker is online
bool use_dht_as_fallback; bool use_dht_as_fallback;
#endif
// if this is true, the piece hashes will be freed, in order // if this is true, the piece hashes will be freed, in order
// to save memory, once the torrent is seeding. This will // to save memory, once the torrent is seeding. This will
@ -975,7 +973,6 @@ namespace libtorrent
bool use_disk_cache_pool; bool use_disk_cache_pool;
}; };
#ifndef TORRENT_DISABLE_DHT
struct dht_settings struct dht_settings
{ {
dht_settings() dht_settings()
@ -1044,7 +1041,6 @@ namespace libtorrent
// outstanding requests // outstanding requests
bool aggressive_lookups; bool aggressive_lookups;
}; };
#endif
#ifndef TORRENT_DISABLE_ENCRYPTION #ifndef TORRENT_DISABLE_ENCRYPTION

View File

@ -40,8 +40,6 @@ POSSIBILITY OF SUCH DAMAGE.
namespace libtorrent namespace libtorrent
{ {
#ifndef TORRENT_DISABLE_DHT
struct dht_lookup struct dht_lookup
{ {
char const* type; char const* type;
@ -70,8 +68,6 @@ namespace libtorrent
int last_active; int last_active;
}; };
#endif
struct utp_status struct utp_status
{ {
int num_idle; int num_idle;
@ -129,7 +125,6 @@ namespace libtorrent
int disk_write_queue; int disk_write_queue;
int disk_read_queue; int disk_read_queue;
#ifndef TORRENT_DISABLE_DHT
int dht_nodes; int dht_nodes;
int dht_node_cache; int dht_node_cache;
int dht_torrents; int dht_torrents;
@ -137,7 +132,6 @@ namespace libtorrent
std::vector<dht_lookup> active_requests; std::vector<dht_lookup> active_requests;
std::vector<dht_routing_bucket> dht_routing_table; std::vector<dht_routing_bucket> dht_routing_table;
int dht_total_allocations; int dht_total_allocations;
#endif
utp_status utp_stats; utp_status utp_stats;

View File

@ -366,10 +366,8 @@ namespace libtorrent
// forces this torrent to reannounce // forces this torrent to reannounce
// (make a rerequest from the tracker) // (make a rerequest from the tracker)
void force_reannounce() const; void force_reannounce() const;
#ifndef TORRENT_DISABLE_DHT
// announces this torrent to the DHT immediately // announces this torrent to the DHT immediately
void force_dht_announce() const; void force_dht_announce() const;
#endif
// forces a reannounce in the specified amount of time. // forces a reannounce in the specified amount of time.
// This overrides the default announce interval, and no // This overrides the default announce interval, and no

View File

@ -786,54 +786,70 @@ namespace libtorrent
return m_impl->m_disk_thread.status(); return m_impl->m_disk_thread.status();
} }
#ifndef TORRENT_DISABLE_DHT
void session::start_dht() void session::start_dht()
{ {
#ifndef TORRENT_DISABLE_DHT
// the state is loaded in load_state() // the state is loaded in load_state()
TORRENT_ASYNC_CALL(start_dht); TORRENT_ASYNC_CALL(start_dht);
#endif
} }
void session::stop_dht() void session::stop_dht()
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_ASYNC_CALL(stop_dht); TORRENT_ASYNC_CALL(stop_dht);
#endif
} }
void session::set_dht_settings(dht_settings const& settings) void session::set_dht_settings(dht_settings const& settings)
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_ASYNC_CALL1(set_dht_settings, settings); TORRENT_ASYNC_CALL1(set_dht_settings, settings);
#endif
} }
#ifndef TORRENT_NO_DEPRECATE #ifndef TORRENT_NO_DEPRECATE
void session::start_dht(entry const& startup_state) void session::start_dht(entry const& startup_state)
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_ASYNC_CALL1(start_dht, startup_state); TORRENT_ASYNC_CALL1(start_dht, startup_state);
#endif
} }
entry session::dht_state() const entry session::dht_state() const
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_SYNC_CALL_RET(entry, dht_state); TORRENT_SYNC_CALL_RET(entry, dht_state);
return r; return r;
} #else
return entry();
#endif #endif
}
#endif // TORRENT_NO_DEPRECATE
void session::add_dht_node(std::pair<std::string, int> const& node) void session::add_dht_node(std::pair<std::string, int> const& node)
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_ASYNC_CALL1(add_dht_node_name, node); TORRENT_ASYNC_CALL1(add_dht_node_name, node);
#endif
} }
void session::add_dht_router(std::pair<std::string, int> const& node) void session::add_dht_router(std::pair<std::string, int> const& node)
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_ASYNC_CALL1(add_dht_router, node); TORRENT_ASYNC_CALL1(add_dht_router, node);
#endif
} }
bool session::is_dht_running() const bool session::is_dht_running() const
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_SYNC_CALL_RET(bool, is_dht_running); TORRENT_SYNC_CALL_RET(bool, is_dht_running);
return r; return r;
} #else
return false;
#endif #endif
}
#ifndef TORRENT_DISABLE_ENCRYPTION #ifndef TORRENT_DISABLE_ENCRYPTION
void session::set_pe_settings(pe_settings const& settings) void session::set_pe_settings(pe_settings const& settings)
@ -911,18 +927,22 @@ namespace libtorrent
} }
#ifndef TORRENT_DISABLE_DHT
void session::set_dht_proxy(proxy_settings const& s) void session::set_dht_proxy(proxy_settings const& s)
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_ASYNC_CALL1(set_dht_proxy, s); TORRENT_ASYNC_CALL1(set_dht_proxy, s);
#endif
} }
proxy_settings session::dht_proxy() const proxy_settings session::dht_proxy() const
{ {
#ifndef TORRENT_DISABLE_DHT
TORRENT_SYNC_CALL_RET(proxy_settings, dht_proxy); TORRENT_SYNC_CALL_RET(proxy_settings, dht_proxy);
return r; return r;
} #else
return proxy_settings();
#endif #endif
}
#endif // TORRENT_NO_DEPRECATE #endif // TORRENT_NO_DEPRECATE
#if TORRENT_USE_I2P #if TORRENT_USE_I2P
@ -1165,9 +1185,7 @@ namespace libtorrent
, max_queued_disk_bytes(1024 * 1024) , max_queued_disk_bytes(1024 * 1024)
, max_queued_disk_bytes_low_watermark(0) , max_queued_disk_bytes_low_watermark(0)
, handshake_timeout(10) , handshake_timeout(10)
#ifndef TORRENT_DISABLE_DHT
, use_dht_as_fallback(false) , use_dht_as_fallback(false)
#endif
, free_torrent_hashes(true) , free_torrent_hashes(true)
, upnp_ignore_nonrouters(false) , upnp_ignore_nonrouters(false)
, send_buffer_low_watermark(512) , send_buffer_low_watermark(512)

View File

@ -5558,7 +5558,12 @@ retry:
s.total_dht_download = m_stat.total_transfer(stat::download_dht_protocol); s.total_dht_download = m_stat.total_transfer(stat::download_dht_protocol);
s.dht_upload_rate = m_stat.transfer_rate(stat::upload_dht_protocol); s.dht_upload_rate = m_stat.transfer_rate(stat::upload_dht_protocol);
s.total_dht_upload = m_stat.total_transfer(stat::upload_dht_protocol); s.total_dht_upload = m_stat.total_transfer(stat::upload_dht_protocol);
#endif #else
s.dht_download_rate = 0;
s.total_dht_download = 0;
s.dht_upload_rate = 0;
s.total_dht_upload = 0;
#endif // TORRENT_DISABLE_DHT
// tracker // tracker
s.tracker_download_rate = m_stat.transfer_rate(stat::download_tracker_protocol); s.tracker_download_rate = m_stat.transfer_rate(stat::download_tracker_protocol);
@ -5591,6 +5596,7 @@ retry:
m_dht->dht_status(s); m_dht->dht_status(s);
} }
else else
#endif
{ {
s.dht_nodes = 0; s.dht_nodes = 0;
s.dht_node_cache = 0; s.dht_node_cache = 0;
@ -5598,7 +5604,6 @@ retry:
s.dht_global_nodes = 0; s.dht_global_nodes = 0;
s.dht_total_allocations = 0; s.dht_total_allocations = 0;
} }
#endif
m_utp_socket_manager.get_status(s.utp_stats); m_utp_socket_manager.get_status(s.utp_stats);

View File

@ -905,13 +905,13 @@ namespace libtorrent
TORRENT_ASYNC_CALL1(force_tracker_request, time_now() + seconds(duration.total_seconds())); TORRENT_ASYNC_CALL1(force_tracker_request, time_now() + seconds(duration.total_seconds()));
} }
#ifndef TORRENT_DISABLE_DHT
void torrent_handle::force_dht_announce() const void torrent_handle::force_dht_announce() const
{ {
INVARIANT_CHECK; INVARIANT_CHECK;
#ifndef TORRENT_DISABLE_DHT
TORRENT_ASYNC_CALL(dht_announce); TORRENT_ASYNC_CALL(dht_announce);
}
#endif #endif
}
void torrent_handle::force_reannounce() const void torrent_handle::force_reannounce() const
{ {

View File

@ -69,11 +69,14 @@ using namespace boost::tuples;
namespace libtorrent { namespace libtorrent {
TORRENT_EXPORT std::string sanitize_path(std::string const& p); TORRENT_EXPORT std::string sanitize_path(std::string const& p);
#ifndef TORRENT_DISABLE_DHT
namespace dht namespace dht
{ {
TORRENT_EXPORT libtorrent::dht::node_id generate_id_impl( TORRENT_EXPORT libtorrent::dht::node_id generate_id_impl(
address const& ip_, boost::uint32_t r); address const& ip_, boost::uint32_t r);
} }
#endif
} }
sha1_hash to_hash(char const* s) sha1_hash to_hash(char const* s)
@ -451,6 +454,7 @@ int test_main()
TEST_CHECK(ret == 1); TEST_CHECK(ret == 1);
#endif #endif
#ifndef TORRENT_DISABLE_DHT
// test verify_message // test verify_message
const static key_desc_t msg_desc[] = { const static key_desc_t msg_desc[] = {
{"A", lazy_entry::string_t, 4, 0}, {"A", lazy_entry::string_t, 4, 0},
@ -543,6 +547,7 @@ int test_main()
TEST_CHECK(ent.list_at(1)->string_value() == ""); TEST_CHECK(ent.list_at(1)->string_value() == "");
} }
} }
#endif // TORRENT_DISABLE_DHT
// test external ip voting // test external ip voting
external_ip ipv1; external_ip ipv1;
@ -896,6 +901,7 @@ int test_main()
TEST_CHECK(ec == error_code(errors::missing_info_hash_in_uri)); TEST_CHECK(ec == error_code(errors::missing_info_hash_in_uri));
ec.clear(); ec.clear();
#ifndef TORRENT_DISABLE_DHT
parse_magnet_uri("magnet:?xt=urn:btih:cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd&dn=foo&dht=127.0.0.1:43", p, ec); parse_magnet_uri("magnet:?xt=urn:btih:cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd&dn=foo&dht=127.0.0.1:43", p, ec);
TEST_CHECK(!ec); TEST_CHECK(!ec);
if (ec) fprintf(stderr, "%s\n", ec.message().c_str()); if (ec) fprintf(stderr, "%s\n", ec.message().c_str());
@ -904,6 +910,7 @@ int test_main()
TEST_CHECK(p.dht_nodes.size() == 1); TEST_CHECK(p.dht_nodes.size() == 1);
TEST_CHECK(p.dht_nodes[0].first == "127.0.0.1"); TEST_CHECK(p.dht_nodes[0].first == "127.0.0.1");
TEST_CHECK(p.dht_nodes[0].second == 43); TEST_CHECK(p.dht_nodes[0].second == 43);
#endif
// make sure settings that haven't been changed from their defaults are not saved // make sure settings that haven't been changed from their defaults are not saved
TEST_CHECK(session_state2.dict_find("settings")->dict_find("optimistic_disk_retry") == 0); TEST_CHECK(session_state2.dict_find("settings")->dict_find("optimistic_disk_retry") == 0);