2007-01-10 17:11:43 +01:00
|
|
|
// Copyright Daniel Wallin 2007. Use, modification and distribution is
|
|
|
|
// subject to the Boost Software License, Version 1.0. (See accompanying
|
|
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
|
|
|
|
#include <libtorrent/peer_info.hpp>
|
2008-06-02 19:39:11 +02:00
|
|
|
#include <libtorrent/bitfield.hpp>
|
2007-01-10 17:11:43 +01:00
|
|
|
#include <boost/python.hpp>
|
2008-03-27 19:14:52 +01:00
|
|
|
#include <boost/python/iterator.hpp>
|
2007-01-10 17:11:43 +01:00
|
|
|
|
|
|
|
using namespace boost::python;
|
|
|
|
using namespace libtorrent;
|
|
|
|
|
2008-03-28 18:29:39 +01:00
|
|
|
int get_last_active(peer_info const& pi)
|
|
|
|
{
|
|
|
|
return total_seconds(pi.last_active);
|
|
|
|
}
|
|
|
|
|
|
|
|
int get_last_request(peer_info const& pi)
|
|
|
|
{
|
|
|
|
return total_seconds(pi.last_request);
|
|
|
|
}
|
|
|
|
|
2013-05-03 10:24:26 +02:00
|
|
|
int get_download_queue_time(peer_info const& pi)
|
|
|
|
{
|
|
|
|
return total_seconds(pi.download_queue_time);
|
|
|
|
}
|
|
|
|
|
2008-03-28 18:29:39 +01:00
|
|
|
#ifndef TORRENT_DISABLE_RESOLVE_COUNTRIES
|
|
|
|
str get_country(peer_info const& pi)
|
|
|
|
{
|
|
|
|
return str(pi.country, 2);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2013-05-03 10:24:26 +02:00
|
|
|
tuple get_local_endpoint(peer_info const& pi)
|
|
|
|
{
|
2013-10-02 00:11:46 +02:00
|
|
|
return boost::python::make_tuple(pi.local_endpoint.address().to_string(), pi.local_endpoint.port());
|
2013-05-03 10:24:26 +02:00
|
|
|
}
|
|
|
|
|
2008-03-27 19:14:52 +01:00
|
|
|
tuple get_ip(peer_info const& pi)
|
|
|
|
{
|
2013-10-02 00:11:46 +02:00
|
|
|
return boost::python::make_tuple(pi.ip.address().to_string(), pi.ip.port());
|
2008-03-27 19:14:52 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
list get_pieces(peer_info const& pi)
|
|
|
|
{
|
2008-03-28 18:29:39 +01:00
|
|
|
list ret;
|
2008-03-27 19:14:52 +01:00
|
|
|
|
2008-06-02 19:39:11 +02:00
|
|
|
for (bitfield::const_iterator i = pi.pieces.begin()
|
2008-03-28 18:29:39 +01:00
|
|
|
, end(pi.pieces.end()); i != end; ++i)
|
|
|
|
{
|
|
|
|
ret.append(*i);
|
|
|
|
}
|
|
|
|
return ret;
|
2008-03-27 19:14:52 +01:00
|
|
|
}
|
|
|
|
|
2007-01-10 17:11:43 +01:00
|
|
|
void bind_peer_info()
|
|
|
|
{
|
|
|
|
scope pi = class_<peer_info>("peer_info")
|
|
|
|
.def_readonly("flags", &peer_info::flags)
|
2008-03-28 18:29:39 +01:00
|
|
|
.def_readonly("source", &peer_info::source)
|
|
|
|
.def_readonly("read_state", &peer_info::read_state)
|
|
|
|
.def_readonly("write_state", &peer_info::write_state)
|
2008-03-27 19:14:52 +01:00
|
|
|
.add_property("ip", get_ip)
|
2007-01-10 17:11:43 +01:00
|
|
|
.def_readonly("up_speed", &peer_info::up_speed)
|
|
|
|
.def_readonly("down_speed", &peer_info::down_speed)
|
|
|
|
.def_readonly("payload_up_speed", &peer_info::payload_up_speed)
|
|
|
|
.def_readonly("payload_down_speed", &peer_info::payload_down_speed)
|
|
|
|
.def_readonly("total_download", &peer_info::total_download)
|
|
|
|
.def_readonly("total_upload", &peer_info::total_upload)
|
|
|
|
.def_readonly("pid", &peer_info::pid)
|
2008-03-27 19:14:52 +01:00
|
|
|
.add_property("pieces", get_pieces)
|
2014-07-06 21:18:00 +02:00
|
|
|
#ifndef TORRENT_NO_DEPRECATE
|
2007-01-10 17:11:43 +01:00
|
|
|
.def_readonly("upload_limit", &peer_info::upload_limit)
|
|
|
|
.def_readonly("download_limit", &peer_info::download_limit)
|
2014-07-06 21:18:00 +02:00
|
|
|
.def_readonly("load_balancing", &peer_info::load_balancing)
|
|
|
|
#endif
|
2008-03-28 18:29:39 +01:00
|
|
|
.add_property("last_request", get_last_request)
|
|
|
|
.add_property("last_active", get_last_active)
|
2013-05-03 10:24:26 +02:00
|
|
|
.add_property("download_queue_time", get_download_queue_time)
|
|
|
|
.def_readonly("queue_bytes", &peer_info::queue_bytes)
|
|
|
|
.def_readonly("request_timeout", &peer_info::request_timeout)
|
2008-03-28 18:29:39 +01:00
|
|
|
.def_readonly("send_buffer_size", &peer_info::send_buffer_size)
|
|
|
|
.def_readonly("used_send_buffer", &peer_info::used_send_buffer)
|
2013-05-03 10:24:26 +02:00
|
|
|
.def_readonly("receive_buffer_size", &peer_info::receive_buffer_size)
|
|
|
|
.def_readonly("used_receive_buffer", &peer_info::used_receive_buffer)
|
2008-03-28 18:29:39 +01:00
|
|
|
.def_readonly("num_hashfails", &peer_info::num_hashfails)
|
|
|
|
#ifndef TORRENT_DISABLE_RESOLVE_COUNTRIES
|
|
|
|
.add_property("country", get_country)
|
2008-04-05 06:53:22 +02:00
|
|
|
#endif
|
|
|
|
#ifndef TORRENT_DISABLE_GEO_IP
|
|
|
|
.def_readonly("inet_as_name", &peer_info::inet_as_name)
|
|
|
|
.def_readonly("inet_as", &peer_info::inet_as)
|
2008-03-28 18:29:39 +01:00
|
|
|
#endif
|
2007-01-10 17:11:43 +01:00
|
|
|
.def_readonly("download_queue_length", &peer_info::download_queue_length)
|
|
|
|
.def_readonly("upload_queue_length", &peer_info::upload_queue_length)
|
2008-03-28 18:29:39 +01:00
|
|
|
.def_readonly("failcount", &peer_info::failcount)
|
2007-01-10 17:11:43 +01:00
|
|
|
.def_readonly("downloading_piece_index", &peer_info::downloading_piece_index)
|
|
|
|
.def_readonly("downloading_block_index", &peer_info::downloading_block_index)
|
|
|
|
.def_readonly("downloading_progress", &peer_info::downloading_progress)
|
|
|
|
.def_readonly("downloading_total", &peer_info::downloading_total)
|
|
|
|
.def_readonly("client", &peer_info::client)
|
|
|
|
.def_readonly("connection_type", &peer_info::connection_type)
|
2008-03-28 18:29:39 +01:00
|
|
|
.def_readonly("remote_dl_rate", &peer_info::remote_dl_rate)
|
|
|
|
.def_readonly("pending_disk_bytes", &peer_info::pending_disk_bytes)
|
|
|
|
.def_readonly("send_quota", &peer_info::send_quota)
|
|
|
|
.def_readonly("receive_quota", &peer_info::receive_quota)
|
|
|
|
.def_readonly("rtt", &peer_info::rtt)
|
2013-05-03 10:24:26 +02:00
|
|
|
.def_readonly("num_pieces", &peer_info::num_pieces)
|
|
|
|
.def_readonly("download_rate_peak", &peer_info::download_rate_peak)
|
|
|
|
.def_readonly("upload_rate_peak", &peer_info::upload_rate_peak)
|
2008-09-25 22:39:06 +02:00
|
|
|
.def_readonly("progress", &peer_info::progress)
|
2013-05-03 10:24:26 +02:00
|
|
|
.def_readonly("progress_ppm", &peer_info::progress_ppm)
|
|
|
|
.def_readonly("estimated_reciprocation_rate", &peer_info::estimated_reciprocation_rate)
|
|
|
|
.add_property("local_endpoint", get_local_endpoint)
|
2007-01-10 17:11:43 +01:00
|
|
|
;
|
|
|
|
|
2008-03-28 18:29:39 +01:00
|
|
|
// flags
|
2007-01-10 17:11:43 +01:00
|
|
|
pi.attr("interesting") = (int)peer_info::interesting;
|
|
|
|
pi.attr("choked") = (int)peer_info::choked;
|
|
|
|
pi.attr("remote_interested") = (int)peer_info::remote_interested;
|
|
|
|
pi.attr("remote_choked") = (int)peer_info::remote_choked;
|
|
|
|
pi.attr("supports_extensions") = (int)peer_info::supports_extensions;
|
|
|
|
pi.attr("local_connection") = (int)peer_info::local_connection;
|
|
|
|
pi.attr("handshake") = (int)peer_info::handshake;
|
|
|
|
pi.attr("connecting") = (int)peer_info::connecting;
|
2014-10-05 21:32:29 +02:00
|
|
|
#ifndef TORRENT_NO_DEPRECATE
|
2007-01-10 17:11:43 +01:00
|
|
|
pi.attr("queued") = (int)peer_info::queued;
|
2014-10-05 21:32:29 +02:00
|
|
|
#endif
|
2007-06-09 01:57:22 +02:00
|
|
|
pi.attr("on_parole") = (int)peer_info::on_parole;
|
|
|
|
pi.attr("seed") = (int)peer_info::seed;
|
2013-05-03 10:24:26 +02:00
|
|
|
pi.attr("optimistic_unchoke") = (int)peer_info::optimistic_unchoke;
|
|
|
|
pi.attr("snubbed") = (int)peer_info::snubbed;
|
|
|
|
pi.attr("upload_only") = (int)peer_info::upload_only;
|
|
|
|
pi.attr("endgame_mode") = (int)peer_info::endgame_mode;
|
|
|
|
pi.attr("holepunched") = (int)peer_info::holepunched;
|
2007-06-09 01:57:22 +02:00
|
|
|
#ifndef TORRENT_DISABLE_ENCRYPTION
|
|
|
|
pi.attr("rc4_encrypted") = (int)peer_info::rc4_encrypted;
|
|
|
|
pi.attr("plaintext_encrypted") = (int)peer_info::plaintext_encrypted;
|
|
|
|
#endif
|
2007-01-10 17:11:43 +01:00
|
|
|
|
2008-03-28 18:29:39 +01:00
|
|
|
// connection_type
|
|
|
|
pi.attr("standard_bittorrent") = (int)peer_info::standard_bittorrent;
|
|
|
|
pi.attr("web_seed") = (int)peer_info::web_seed;
|
|
|
|
|
|
|
|
// source
|
|
|
|
pi.attr("tracker") = (int)peer_info::tracker;
|
|
|
|
pi.attr("dht") = (int)peer_info::dht;
|
|
|
|
pi.attr("pex") = (int)peer_info::pex;
|
|
|
|
pi.attr("lsd") = (int)peer_info::lsd;
|
|
|
|
pi.attr("resume_data") = (int)peer_info::resume_data;
|
2007-04-19 19:56:12 +02:00
|
|
|
|
2008-03-28 18:29:39 +01:00
|
|
|
// read/write state
|
|
|
|
pi.attr("bw_idle") = (int)peer_info::bw_idle;
|
2009-12-21 23:02:34 +01:00
|
|
|
#ifndef TORRENT_NO_DEPRECATE
|
2008-03-28 18:29:39 +01:00
|
|
|
pi.attr("bw_torrent") = (int)peer_info::bw_torrent;
|
|
|
|
pi.attr("bw_global") = (int)peer_info::bw_global;
|
2009-12-21 23:02:34 +01:00
|
|
|
#endif
|
2013-05-03 10:24:26 +02:00
|
|
|
pi.attr("bw_limit") = (int)peer_info::bw_limit;
|
2008-03-28 18:29:39 +01:00
|
|
|
pi.attr("bw_network") = (int)peer_info::bw_network;
|
2013-05-03 10:24:26 +02:00
|
|
|
pi.attr("bw_disk") = (int)peer_info::bw_disk;
|
2007-01-10 17:11:43 +01:00
|
|
|
}
|
|
|
|
|