#include <dht_tracker.hpp>
Public Member Functions | |
| dht_tracker (asio::io_service &ios, dht_settings const &settings, asio::ip::address listen_interface, entry const &bootstrap) | |
| void | stop () |
| void | add_node (udp::endpoint node) |
| void | add_node (std::pair< std::string, int > const &node) |
| void | add_router_node (std::pair< std::string, int > const &node) |
| void | rebind (asio::ip::address listen_interface, int listen_port) |
| entry | state () const |
| void | announce (sha1_hash const &ih, int listen_port, boost::function< void(std::vector< tcp::endpoint > const &, sha1_hash const &)> f) |
| void | dht_status (session_status &s) |
Private Member Functions | |
| boost::intrusive_ptr< dht_tracker > | self () |
| void | on_name_lookup (asio::error_code const &e, udp::resolver::iterator host) |
| void | on_router_name_lookup (asio::error_code const &e, udp::resolver::iterator host) |
| void | connection_timeout (asio::error_code const &e) |
| void | refresh_timeout (asio::error_code const &e) |
| void | tick (asio::error_code const &e) |
| void | on_receive (asio::error_code const &error, size_t bytes_transferred) |
| void | on_bootstrap () |
| void | send_packet (msg const &m) |
Private Attributes | |
| asio::strand | m_strand |
| asio::ip::udp::socket | m_socket |
| node_impl | m_dht |
| int | m_buffer |
| std::vector< char > | m_in_buf [2] |
| udp::endpoint | m_remote_endpoint [2] |
| std::vector< char > | m_send_buf |
| boost::posix_time::ptime | m_last_refresh |
| deadline_timer | m_timer |
| deadline_timer | m_connection_timer |
| deadline_timer | m_refresh_timer |
| dht_settings const & | m_settings |
| int | m_refresh_bucket |
| udp::resolver | m_host_resolver |
| boost::detail::atomic_count | m_refs |
Friends | |
| void | intrusive_ptr_add_ref (dht_tracker const *) |
| void | intrusive_ptr_release (dht_tracker const *) |
Definition at line 70 of file dht_tracker.hpp.
| libtorrent::dht::dht_tracker::dht_tracker | ( | asio::io_service & | ios, | |
| dht_settings const & | settings, | |||
| asio::ip::address | listen_interface, | |||
| entry const & | bootstrap | |||
| ) |
Definition at line 126 of file dht_tracker.cpp.
References asio::basic_datagram_socket< Protocol, DatagramSocketService >::async_receive_from(), asio::detail::socket_ops::bind(), libtorrent::dht::node_impl::bootstrap(), asio::buffer(), connection_timeout(), libtorrent::entry::dictionary_t, libtorrent::entry::find_key(), m_buffer, m_connection_timer, m_dht, m_in_buf, m_refresh_timer, m_remote_endpoint, m_socket, m_strand, m_timer, nodes(), on_bootstrap(), on_receive(), refresh_timeout(), tick(), libtorrent::entry::type(), and asio::io_service::strand::wrap().
| void libtorrent::dht::dht_tracker::stop | ( | ) |
Definition at line 194 of file dht_tracker.cpp.
References asio::basic_socket< Protocol, SocketService >::close(), m_connection_timer, m_refresh_timer, m_socket, and m_timer.
| void libtorrent::dht::dht_tracker::add_node | ( | udp::endpoint | node | ) |
Definition at line 666 of file dht_tracker.cpp.
References libtorrent::dht::node_impl::add_node(), and m_dht.
Referenced by libtorrent::aux::session_impl::add_torrent(), and on_name_lookup().
| void libtorrent::dht::dht_tracker::add_node | ( | std::pair< std::string, int > const & | node | ) |
Definition at line 671 of file dht_tracker.cpp.
References asio::ip::basic_resolver< InternetProtocol, ResolverService >::async_resolve(), asio::detail::socket_ops::bind(), m_host_resolver, m_strand, on_name_lookup(), and asio::io_service::strand::wrap().
| void libtorrent::dht::dht_tracker::add_router_node | ( | std::pair< std::string, int > const & | node | ) |
Definition at line 689 of file dht_tracker.cpp.
References asio::ip::basic_resolver< InternetProtocol, ResolverService >::async_resolve(), asio::detail::socket_ops::bind(), m_host_resolver, m_strand, on_router_name_lookup(), and asio::io_service::strand::wrap().
| void libtorrent::dht::dht_tracker::rebind | ( | asio::ip::address | listen_interface, | |
| int | listen_port | |||
| ) |
| entry libtorrent::dht::dht_tracker::state | ( | ) | const |
Definition at line 635 of file dht_tracker.cpp.
References libtorrent::dht::node_impl::begin(), libtorrent::entry::dictionary_t, libtorrent::dht::node_impl::end(), asio::placeholders::iterator, libtorrent::entry::list(), libtorrent::entry::list_t, m_dht, libtorrent::dht::node_impl::nid(), nodes(), libtorrent::dht::node_impl::replacement_cache(), and libtorrent::detail::write_endpoint().
| void libtorrent::dht::dht_tracker::announce | ( | sha1_hash const & | ih, | |
| int | listen_port, | |||
| boost::function< void(std::vector< tcp::endpoint > const &, sha1_hash const &)> | f | |||
| ) |
Definition at line 344 of file dht_tracker.cpp.
References libtorrent::dht::node_impl::announce(), and m_dht.
| void libtorrent::dht::dht_tracker::dht_status | ( | session_status & | s | ) |
Definition at line 202 of file dht_tracker.cpp.
References libtorrent::dht::node_impl::data_size(), libtorrent::session_status::dht_node_cache, libtorrent::session_status::dht_nodes, libtorrent::session_status::dht_torrents, m_dht, and libtorrent::dht::node_impl::size().
| boost::intrusive_ptr<dht_tracker> libtorrent::dht::dht_tracker::self | ( | ) | [inline, private] |
Definition at line 94 of file dht_tracker.hpp.
| void libtorrent::dht::dht_tracker::on_name_lookup | ( | asio::error_code const & | e, | |
| udp::resolver::iterator | host | |||
| ) | [private] |
| void libtorrent::dht::dht_tracker::on_router_name_lookup | ( | asio::error_code const & | e, | |
| udp::resolver::iterator | host | |||
| ) | [private] |
Definition at line 696 of file dht_tracker.cpp.
References libtorrent::dht::node_impl::add_router_node(), and m_dht.
Referenced by add_router_node().
| void libtorrent::dht::dht_tracker::connection_timeout | ( | asio::error_code const & | e | ) | [private] |
Definition at line 208 of file dht_tracker.cpp.
References asio::detail::socket_ops::bind(), libtorrent::dht::node_impl::connection_timeout(), m_connection_timer, m_dht, m_strand, and asio::io_service::strand::wrap().
Referenced by dht_tracker().
| void libtorrent::dht::dht_tracker::refresh_timeout | ( | asio::error_code const & | e | ) | [private] |
Definition at line 225 of file dht_tracker.cpp.
References asio::detail::socket_ops::bind(), m_dht, m_refresh_timer, m_strand, libtorrent::dht::node_impl::refresh_timeout(), and asio::io_service::strand::wrap().
Referenced by dht_tracker().
| void libtorrent::dht::dht_tracker::tick | ( | asio::error_code const & | e | ) | [private] |
Definition at line 247 of file dht_tracker.cpp.
References libtorrent::dht::node_impl::begin_data(), asio::detail::socket_ops::bind(), libtorrent::dht::distance(), libtorrent::dht::node_impl::end_data(), m_dht, m_strand, m_timer, libtorrent::dht::node_impl::new_write_key(), libtorrent::dht::node_impl::print_state(), libtorrent::dht::node_impl::size(), and asio::io_service::strand::wrap().
Referenced by dht_tracker().
| void libtorrent::dht::dht_tracker::on_receive | ( | asio::error_code const & | error, | |
| size_t | bytes_transferred | |||
| ) | [private] |
Definition at line 353 of file dht_tracker.cpp.
References a, libtorrent::dht::msg::addr, libtorrent::dht::messages::announce_peer, asio::basic_datagram_socket< Protocol, DatagramSocketService >::async_receive_from(), libtorrent::bdecode(), libtorrent::big_number::begin(), asio::detail::socket_ops::bind(), asio::buffer(), libtorrent::dht::distance(), simple_client::e, libtorrent::dht::messages::error, libtorrent::dht::msg::error_code, libtorrent::dht::msg::error_msg, libtorrent::entry::find_key(), libtorrent::dht::messages::find_node, libtorrent::dht::messages::get_peers, libtorrent::dht::msg::id, libtorrent::dht::node_impl::incoming(), libtorrent::dht::msg::info_hash, libtorrent::entry::integer(), libtorrent::entry::list(), m_buffer, m_dht, m_in_buf, m_remote_endpoint, m_socket, m_strand, libtorrent::dht::msg::message_id, n, nodes(), libtorrent::dht::msg::nodes, asio::detail::error_base< T >::operation_aborted, libtorrent::dht::msg::peers, libtorrent::dht::messages::ping, libtorrent::dht::msg::port, libtorrent::dht::msg::reply, libtorrent::entry::string(), TORRENT_LOG, libtorrent::dht::msg::transaction_id, libtorrent::dht::node_impl::verify_token(), asio::io_service::strand::wrap(), and libtorrent::dht::msg::write_token.
Referenced by dht_tracker().
| void libtorrent::dht::dht_tracker::on_bootstrap | ( | ) | [private] |
| void libtorrent::dht::dht_tracker::send_packet | ( | msg const & | m | ) | [private] |
Definition at line 710 of file dht_tracker.cpp.
References a, libtorrent::dht::msg::addr, libtorrent::dht::messages::announce_peer, libtorrent::big_number::begin(), libtorrent::bencode(), asio::buffer(), libtorrent::entry::dictionary_t, simple_client::e, libtorrent::big_number::end(), libtorrent::dht::messages::error, libtorrent::dht::msg::error_code, libtorrent::dht::msg::error_msg, libtorrent::dht::messages::find_node, libtorrent::dht::messages::get_peers, libtorrent::dht::msg::id, libtorrent::dht::messages::ids, libtorrent::dht::msg::info_hash, asio::placeholders::iterator, LIBTORRENT_VERSION_MAJOR, LIBTORRENT_VERSION_MINOR, libtorrent::entry::list(), libtorrent::entry::list_t, m_send_buf, m_settings, m_socket, libtorrent::dht::msg::message_id, n, libtorrent::dht::msg::nodes, libtorrent::dht::msg::peers, libtorrent::dht::msg::piggy_backed_ping, libtorrent::dht::messages::ping, libtorrent::dht::msg::ping_transaction_id, libtorrent::dht::msg::reply, asio::basic_datagram_socket< Protocol, DatagramSocketService >::send_to(), libtorrent::dht_settings::service_port, libtorrent::entry::string(), libtorrent::entry::string_t, TORRENT_LOG, libtorrent::dht::msg::transaction_id, libtorrent::entry::type(), libtorrent::entry::undefined_t, libtorrent::detail::write_endpoint(), libtorrent::dht::msg::write_token, and libtorrent::detail::write_uint8().
| void intrusive_ptr_add_ref | ( | dht_tracker const * | c | ) | [friend] |
| void intrusive_ptr_release | ( | dht_tracker const * | c | ) | [friend] |
Definition at line 111 of file dht_tracker.hpp.
Referenced by add_node(), add_router_node(), connection_timeout(), dht_tracker(), on_receive(), refresh_timeout(), and tick().
Definition at line 112 of file dht_tracker.hpp.
Referenced by dht_tracker(), on_receive(), rebind(), send_packet(), and stop().
node_impl libtorrent::dht::dht_tracker::m_dht [private] |
Definition at line 114 of file dht_tracker.hpp.
Referenced by add_node(), announce(), connection_timeout(), dht_status(), dht_tracker(), on_receive(), on_router_name_lookup(), refresh_timeout(), state(), and tick().
int libtorrent::dht::dht_tracker::m_buffer [private] |
std::vector<char> libtorrent::dht::dht_tracker::m_in_buf[2] [private] |
std::vector<char> libtorrent::dht::dht_tracker::m_send_buf [private] |
boost::posix_time::ptime libtorrent::dht::dht_tracker::m_last_refresh [private] |
Definition at line 123 of file dht_tracker.hpp.
deadline_timer libtorrent::dht::dht_tracker::m_timer [private] |
deadline_timer libtorrent::dht::dht_tracker::m_connection_timer [private] |
Definition at line 125 of file dht_tracker.hpp.
Referenced by connection_timeout(), dht_tracker(), and stop().
deadline_timer libtorrent::dht::dht_tracker::m_refresh_timer [private] |
Definition at line 126 of file dht_tracker.hpp.
Referenced by dht_tracker(), refresh_timeout(), and stop().
dht_settings const& libtorrent::dht::dht_tracker::m_settings [private] |
int libtorrent::dht::dht_tracker::m_refresh_bucket [private] |
Definition at line 128 of file dht_tracker.hpp.
boost::detail::atomic_count libtorrent::dht::dht_tracker::m_refs [mutable, private] |
Definition at line 134 of file dht_tracker.hpp.
Referenced by libtorrent::dht::intrusive_ptr_add_ref(), and libtorrent::dht::intrusive_ptr_release().
1.5.6