00001
00002
00003
00004
00005
00006
00007
00008 #include <libtorrent/torrent_handle.hpp>
00009 #include <boost/python.hpp>
00010
00011 using namespace boost::python;
00012 using namespace libtorrent;
00013
00014 object pieces(torrent_status const& s)
00015 {
00016 list result;
00017
00018 for (std::vector<bool>::const_iterator i(s.pieces->begin()), e(s.pieces->end()); i != e; ++i)
00019 result.append(*i);
00020
00021 return result;
00022 }
00023
00024 extern char const* torrent_status_doc;
00025 extern char const* torrent_status_state_doc;
00026 extern char const* torrent_status_paused_doc;
00027 extern char const* torrent_status_progress_doc;
00028 extern char const* torrent_status_next_announce_doc;
00029 extern char const* torrent_status_announce_interval_doc;
00030 extern char const* torrent_status_current_tracker_doc;
00031 extern char const* torrent_status_total_download_doc;
00032 extern char const* torrent_status_total_upload_doc;
00033 extern char const* torrent_status_total_payload_download_doc;
00034 extern char const* torrent_status_total_payload_upload_doc;
00035 extern char const* torrent_status_total_failed_bytes_doc;
00036
00037 void bind_torrent_status()
00038 {
00039 scope status = class_<torrent_status>("torrent_status", torrent_status_doc)
00040 .def_readonly("state", &torrent_status::state, torrent_status_state_doc)
00041 .def_readonly("paused", &torrent_status::paused, torrent_status_paused_doc)
00042 .def_readonly("progress", &torrent_status::progress, torrent_status_progress_doc)
00043 .add_property(
00044 "next_announce"
00045 , make_getter(
00046 &torrent_status::next_announce, return_value_policy<return_by_value>()
00047 )
00048 , torrent_status_next_announce_doc
00049 )
00050 .add_property(
00051 "announce_interval"
00052 , make_getter(
00053 &torrent_status::announce_interval, return_value_policy<return_by_value>()
00054 )
00055 , torrent_status_announce_interval_doc
00056 )
00057 .def_readonly(
00058 "current_tracker", &torrent_status::current_tracker
00059 , torrent_status_current_tracker_doc
00060 )
00061 .def_readonly(
00062 "total_download", &torrent_status::total_download
00063 , torrent_status_total_download_doc
00064 )
00065 .def_readonly(
00066 "total_upload", &torrent_status::total_upload
00067 , torrent_status_total_upload_doc
00068 )
00069 .def_readonly(
00070 "total_payload_download", &torrent_status::total_payload_download
00071 , torrent_status_total_payload_download_doc
00072 )
00073 .def_readonly(
00074 "total_payload_upload", &torrent_status::total_payload_upload
00075 , torrent_status_total_payload_upload_doc
00076 )
00077 .def_readonly(
00078 "total_failed_bytes", &torrent_status::total_failed_bytes
00079 , torrent_status_total_failed_bytes_doc
00080 )
00081 .def_readonly("total_redundant_bytes", &torrent_status::total_redundant_bytes)
00082 .def_readonly("download_rate", &torrent_status::download_rate)
00083 .def_readonly("upload_rate", &torrent_status::upload_rate)
00084 .def_readonly("download_payload_rate", &torrent_status::download_payload_rate)
00085 .def_readonly("upload_payload_rate", &torrent_status::upload_payload_rate)
00086 .def_readonly("num_peers", &torrent_status::num_peers)
00087 .def_readonly("num_complete", &torrent_status::num_complete)
00088 .def_readonly("num_incomplete", &torrent_status::num_incomplete)
00089 .add_property("pieces", pieces)
00090 .def_readonly("num_pieces", &torrent_status::num_pieces)
00091 .def_readonly("total_done", &torrent_status::total_done)
00092 .def_readonly("total_wanted_done", &torrent_status::total_wanted_done)
00093 .def_readonly("total_wanted", &torrent_status::total_wanted)
00094 .def_readonly("num_seeds", &torrent_status::num_seeds)
00095 .def_readonly("distributed_copies", &torrent_status::distributed_copies)
00096 .def_readonly("block_size", &torrent_status::block_size)
00097 ;
00098
00099 enum_<torrent_status::state_t>("states")
00100 .value("queued_for_checking", torrent_status::queued_for_checking)
00101 .value("checking_files", torrent_status::checking_files)
00102 .value("connecting_to_tracker", torrent_status::connecting_to_tracker)
00103 .value("downloading", torrent_status::downloading)
00104 .value("finished", torrent_status::finished)
00105 .value("seeding", torrent_status::seeding)
00106 .value("allocating", torrent_status::allocating)
00107 .export_values()
00108 ;
00109 }
00110