From 0f3874028b4461ee2de8f0c272dc6b41beadb374 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Mon, 1 Jan 2007 21:04:30 +0000 Subject: [PATCH] added btgdaemon to identify client and applied wojci's patch to add num_connections() and num_uploads() to session --- include/libtorrent/aux_/session_impl.hpp | 2 ++ include/libtorrent/session.hpp | 8 ++++++++ src/identify_client.cpp | 1 + src/peer_connection.cpp | 5 +++-- src/session.cpp | 10 ++++++++++ src/session_impl.cpp | 20 ++++++++++++++++++++ 6 files changed, 44 insertions(+), 2 deletions(-) diff --git a/include/libtorrent/aux_/session_impl.hpp b/include/libtorrent/aux_/session_impl.hpp index 06c690ac2..6a777a842 100644 --- a/include/libtorrent/aux_/session_impl.hpp +++ b/include/libtorrent/aux_/session_impl.hpp @@ -254,6 +254,8 @@ namespace libtorrent void set_max_connections(int limit); void set_max_uploads(int limit); + int num_uploads() const; + int num_connections() const; session_status status() const; void set_peer_id(peer_id const& id); diff --git a/include/libtorrent/session.hpp b/include/libtorrent/session.hpp index 17cb9290d..94d5c125a 100755 --- a/include/libtorrent/session.hpp +++ b/include/libtorrent/session.hpp @@ -208,10 +208,18 @@ namespace libtorrent // returns the port we ended up listening on unsigned short listen_port() const; + // Get the number of uploads. + int num_uploads() const; + + // Get the number of connections. This number also contains the + // number of half open connections. + int num_connections() const; + void remove_torrent(const torrent_handle& h); void set_settings(session_settings const& s); session_settings const& settings(); + void set_upload_rate_limit(int bytes_per_second); void set_download_rate_limit(int bytes_per_second); void set_max_uploads(int limit); diff --git a/src/identify_client.cpp b/src/identify_client.cpp index e49ff66b5..6e35896b8 100755 --- a/src/identify_client.cpp +++ b/src/identify_client.cpp @@ -146,6 +146,7 @@ namespace , map_entry("BB", "BitBuddy") , map_entry("BC", "BitComet") , map_entry("BF", "Bitflu") + , map_entry("BG", "btgdaemon") , map_entry("BS", "BTSlave") , map_entry("BX", "BittorrentX") , map_entry("CD", "Enhanced CTorrent") diff --git a/src/peer_connection.cpp b/src/peer_connection.cpp index 66ff04aa2..b35dbeb34 100755 --- a/src/peer_connection.cpp +++ b/src/peer_connection.cpp @@ -1020,6 +1020,7 @@ namespace libtorrent piece_picker& picker = t->picker(); piece_manager& fs = t->filesystem(); + policy& pol = t->get_policy(); std::vector finished_blocks; piece_block block_finished(p.piece, p.start / t->block_size()); @@ -1108,7 +1109,7 @@ namespace libtorrent try { - t->get_policy().block_finished(*this, block_finished); + pol.block_finished(*this, block_finished); send_block_requests(); } catch (std::exception const&) {} @@ -1158,7 +1159,7 @@ namespace libtorrent t->piece_failed(p.piece); } - t->get_policy().piece_finished(p.piece, verified); + pol.piece_finished(p.piece, verified); if (!was_seed && t->is_seed()) { diff --git a/src/session.cpp b/src/session.cpp index c9355ab78..cbd3b379e 100755 --- a/src/session.cpp +++ b/src/session.cpp @@ -282,6 +282,16 @@ namespace libtorrent m_impl->set_download_rate_limit(bytes_per_second); } + int session::num_uploads() const + { + return m_impl->num_uploads(); + } + + int session::num_connections() const + { + return m_impl->num_connections(); + } + std::auto_ptr session::pop_alert() { return m_impl->pop_alert(); diff --git a/src/session_impl.cpp b/src/session_impl.cpp index 98ee7d0b6..12b5d2aae 100755 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -1633,6 +1633,7 @@ namespace libtorrent { namespace detail { assert(limit > 0 || limit == -1); mutex_t::scoped_lock l(m_mutex); + m_half_open_limit = limit; } @@ -1643,6 +1644,25 @@ namespace libtorrent { namespace detail m_upload_rate = bytes_per_second; } + int session_impl::num_uploads() const + { + int uploads = 0; + mutex_t::scoped_lock l(m_mutex); + for (torrent_map::const_iterator i = m_torrents.begin() + , end(m_torrents.end()); i != end; i++) + { + uploads += i->second->get_policy().num_uploads(); + } + return uploads; + } + + int session_impl::num_connections() const + { + mutex_t::scoped_lock l(m_mutex); + return m_connections.size() + m_half_open.size(); + } + + std::auto_ptr session_impl::pop_alert() { mutex_t::scoped_lock l(m_mutex);