#include <http_tracker_connection.hpp>
Public Member Functions | |
| http_tracker_connection (asio::strand &str, tracker_manager &man, tracker_request const &req, std::string const &hostname, unsigned short port, std::string request, address bind_infc, boost::weak_ptr< request_callback > c, session_settings const &stn, std::string const &password="") | |
Private Member Functions | |
| boost::intrusive_ptr < http_tracker_connection > | self () |
| void | on_response () |
| void | init_send_buffer (std::string const &hostname, std::string const &request) |
| void | name_lookup (asio::error_code const &error, tcp::resolver::iterator i) |
| void | connected (asio::error_code const &error) |
| void | sent (asio::error_code const &error) |
| void | receive (asio::error_code const &error, std::size_t bytes_transferred) |
| virtual void | on_timeout () |
| void | parse (const entry &e) |
| peer_entry | extract_peer_info (const entry &e) |
Private Attributes | |
| tracker_manager & | m_man |
| http_parser | m_parser |
| asio::strand & | m_strand |
| tcp::resolver | m_name_lookup |
| int | m_port |
| boost::shared_ptr< stream_socket > | m_socket |
| int | m_recv_pos |
| std::vector< char > | m_buffer |
| std::string | m_send_buffer |
| session_settings const & | m_settings |
| std::string | m_password |
| bool | m_timed_out |
Friends | |
| class | tracker_manager |
Definition at line 109 of file http_tracker_connection.hpp.
| libtorrent::http_tracker_connection::http_tracker_connection | ( | asio::strand & | str, | |
| tracker_manager & | man, | |||
| tracker_request const & | req, | |||
| std::string const & | hostname, | |||
| unsigned short | port, | |||
| std::string | request, | |||
| address | bind_infc, | |||
| boost::weak_ptr< request_callback > | c, | |||
| session_settings const & | stn, | |||
| std::string const & | password = "" | |||
| ) |
Definition at line 247 of file http_tracker_connection.cpp.
References libtorrent::tracker_request::announce_request, asio::ip::basic_resolver< InternetProtocol, ResolverService >::async_resolve(), libtorrent::base64encode(), libtorrent::big_number::begin(), asio::detail::socket_ops::bind(), libtorrent::tracker_request::downloaded, libtorrent::escape_string(), libtorrent::tracker_request::event, libtorrent::tracker_connection::has_requester(), libtorrent::tracker_request::info_hash, libtorrent::tracker_request::key, libtorrent::tracker_request::kind, libtorrent::tracker_request::left, libtorrent::tracker_request::listen_port, m_name_lookup, m_port, m_send_buffer, m_settings, m_strand, name_lookup(), libtorrent::tracker_request::none, libtorrent::tracker_request::num_want, libtorrent::tracker_request::pid, pos(), libtorrent::session_settings::proxy_ip, libtorrent::session_settings::proxy_login, libtorrent::session_settings::proxy_password, libtorrent::session_settings::proxy_port, libtorrent::tracker_connection::requester(), libtorrent::tracker_request::scrape_request, libtorrent::timeout_handler::set_timeout(), libtorrent::session_settings::tracker_completion_timeout, libtorrent::session_settings::tracker_receive_timeout, libtorrent::tracker_connection::tracker_req(), libtorrent::tracker_request::uploaded, url_has_argument(), libtorrent::session_settings::user_agent, and asio::io_service::strand::wrap().
| boost::intrusive_ptr<http_tracker_connection> libtorrent::http_tracker_connection::self | ( | ) | [inline, private] |
Reimplemented from libtorrent::timeout_handler.
Definition at line 129 of file http_tracker_connection.hpp.
| void libtorrent::http_tracker_connection::on_response | ( | ) | [private] |
Definition at line 645 of file http_tracker_connection.cpp.
References libtorrent::bdecode(), libtorrent::tracker_connection::bind_interface(), libtorrent::http_parser::body_start(), libtorrent::tracker_connection::close(), libtorrent::tracker_connection::fail(), libtorrent::tracker_connection::has_requester(), libtorrent::http_parser::header(), libtorrent::http_parser::header_finished(), libtorrent::inflate_gzip(), m_buffer, m_man, m_parser, m_password, m_recv_pos, libtorrent::tracker_connection::m_requester, m_settings, m_strand, parse(), libtorrent::tracker_manager::queue_request(), libtorrent::tracker_connection::requester(), libtorrent::http_parser::status_code(), libtorrent::session_settings::tracker_maximum_response_length, libtorrent::tracker_connection::tracker_req(), libtorrent::request_callback::tracker_warning(), and libtorrent::tracker_request::url.
Referenced by receive().
| void libtorrent::http_tracker_connection::init_send_buffer | ( | std::string const & | hostname, | |
| std::string const & | request | |||
| ) | [private] |
| void libtorrent::http_tracker_connection::name_lookup | ( | asio::error_code const & | error, | |
| tcp::resolver::iterator | i | |||
| ) | [private] |
Definition at line 458 of file http_tracker_connection.cpp.
References asio::ip::basic_endpoint< InternetProtocol >::address(), asio::detail::socket_ops::bind(), libtorrent::tracker_connection::bind_interface(), connected(), libtorrent::tracker_connection::fail(), libtorrent::tracker_connection::has_requester(), asio::basic_io_object< IoObjectService >::io_service(), asio::ip::address::is_v4(), m_name_lookup, m_socket, m_timed_out, libtorrent::request_callback::m_tracker_address, asio::error_code::message(), asio::detail::error_base< T >::operation_aborted, asio::ip::basic_endpoint< InternetProtocol >::protocol(), libtorrent::tracker_connection::requester(), libtorrent::timeout_handler::restart_read_timeout(), and libtorrent::request_callback::tracker_warning().
Referenced by http_tracker_connection().
| void libtorrent::http_tracker_connection::connected | ( | asio::error_code const & | error | ) | [private] |
Definition at line 515 of file http_tracker_connection.cpp.
References asio::async_write(), asio::detail::socket_ops::bind(), asio::buffer(), libtorrent::tracker_connection::fail(), libtorrent::tracker_connection::has_requester(), m_send_buffer, m_socket, m_timed_out, asio::error_code::message(), asio::detail::error_base< T >::operation_aborted, libtorrent::tracker_connection::requester(), libtorrent::timeout_handler::restart_read_timeout(), and sent().
Referenced by name_lookup().
| void libtorrent::http_tracker_connection::sent | ( | asio::error_code const & | error | ) | [private] |
Definition at line 540 of file http_tracker_connection.cpp.
References asio::detail::socket_ops::bind(), asio::buffer(), libtorrent::tracker_connection::fail(), libtorrent::tracker_connection::has_requester(), m_buffer, m_recv_pos, m_socket, m_timed_out, asio::error_code::message(), asio::detail::error_base< T >::operation_aborted, receive(), libtorrent::tracker_connection::requester(), and libtorrent::timeout_handler::restart_read_timeout().
Referenced by connected().
| void libtorrent::http_tracker_connection::receive | ( | asio::error_code const & | error, | |
| std::size_t | bytes_transferred | |||
| ) | [private] |
Definition at line 566 of file http_tracker_connection.cpp.
References asio::detail::socket_ops::bind(), asio::buffer(), libtorrent::tracker_connection::close(), asio::detail::error_base< T >::eof, libtorrent::tracker_connection::fail(), libtorrent::http_parser::finished(), libtorrent::tracker_connection::has_requester(), libtorrent::http_parser::header(), libtorrent::http_parser::header_finished(), http_buffer_size, libtorrent::http_parser::incoming(), m_buffer, m_parser, m_recv_pos, m_settings, m_socket, m_timed_out, asio::error_code::message(), minimum_tracker_response_length, on_response(), asio::detail::error_base< T >::operation_aborted, libtorrent::tracker_connection::requester(), libtorrent::timeout_handler::restart_read_timeout(), libtorrent::http_parser::status_code(), and libtorrent::session_settings::tracker_maximum_response_length.
Referenced by sent().
| void libtorrent::http_tracker_connection::on_timeout | ( | ) | [private, virtual] |
Implements libtorrent::timeout_handler.
Definition at line 450 of file http_tracker_connection.cpp.
References asio::ip::basic_resolver< InternetProtocol, ResolverService >::cancel(), libtorrent::tracker_connection::fail_timeout(), m_name_lookup, m_socket, and m_timed_out.
| void libtorrent::http_tracker_connection::parse | ( | const entry & | e | ) | [private] |
Definition at line 780 of file http_tracker_connection.cpp.
References libtorrent::big_number::clear(), libtorrent::dht::distance(), libtorrent::big_number::end(), extract_peer_info(), libtorrent::tracker_connection::fail(), libtorrent::tracker_connection::has_requester(), libtorrent::tracker_request::info_hash, libtorrent::entry::integer(), libtorrent::peer_entry::ip, libtorrent::tracker_request::kind, l, libtorrent::entry::list(), m_parser, libtorrent::peer_entry::pid, libtorrent::peer_entry::port, libtorrent::detail::read_uint16(), libtorrent::detail::read_uint8(), libtorrent::tracker_connection::requester(), libtorrent::tracker_request::scrape_request, libtorrent::http_parser::status_code(), libtorrent::entry::string(), libtorrent::entry::string_t, libtorrent::tracker_connection::tracker_req(), libtorrent::request_callback::tracker_request_error(), libtorrent::request_callback::tracker_response(), and libtorrent::request_callback::tracker_warning().
Referenced by on_response().
| peer_entry libtorrent::http_tracker_connection::extract_peer_info | ( | const entry & | e | ) | [private] |
Definition at line 749 of file http_tracker_connection.cpp.
References libtorrent::big_number::begin(), libtorrent::entry::find_key(), libtorrent::entry::integer(), libtorrent::peer_entry::ip, libtorrent::peer_entry::pid, libtorrent::peer_entry::port, and libtorrent::entry::string().
Referenced by parse().
friend class tracker_manager [friend] |
Definition at line 112 of file http_tracker_connection.hpp.
Reimplemented from libtorrent::tracker_connection.
Definition at line 149 of file http_tracker_connection.hpp.
Referenced by on_response().
Definition at line 150 of file http_tracker_connection.hpp.
Referenced by on_response(), parse(), and receive().
Reimplemented from libtorrent::timeout_handler.
Definition at line 152 of file http_tracker_connection.hpp.
Referenced by http_tracker_connection(), and on_response().
Definition at line 153 of file http_tracker_connection.hpp.
Referenced by http_tracker_connection(), name_lookup(), and on_timeout().
int libtorrent::http_tracker_connection::m_port [private] |
Definition at line 154 of file http_tracker_connection.hpp.
Referenced by http_tracker_connection().
boost::shared_ptr<stream_socket> libtorrent::http_tracker_connection::m_socket [private] |
Definition at line 155 of file http_tracker_connection.hpp.
Referenced by connected(), name_lookup(), on_timeout(), receive(), and sent().
int libtorrent::http_tracker_connection::m_recv_pos [private] |
Definition at line 156 of file http_tracker_connection.hpp.
Referenced by on_response(), receive(), and sent().
std::vector<char> libtorrent::http_tracker_connection::m_buffer [private] |
Definition at line 157 of file http_tracker_connection.hpp.
Referenced by on_response(), receive(), and sent().
std::string libtorrent::http_tracker_connection::m_send_buffer [private] |
Definition at line 158 of file http_tracker_connection.hpp.
Referenced by connected(), and http_tracker_connection().
session_settings const& libtorrent::http_tracker_connection::m_settings [private] |
Definition at line 160 of file http_tracker_connection.hpp.
Referenced by http_tracker_connection(), on_response(), and receive().
std::string libtorrent::http_tracker_connection::m_password [private] |
Definition at line 163 of file http_tracker_connection.hpp.
Referenced by connected(), name_lookup(), on_timeout(), receive(), and sent().
1.5.6