attempt to fix #12

This commit is contained in:
Arvid Norberg 2007-04-19 01:26:23 +00:00
parent 6b0f60e73d
commit 6186e3fce7
2 changed files with 57 additions and 2 deletions

View File

@ -146,6 +146,24 @@ def print_peer_info(console, peers):
write_line(console, out)
def print_download_queue(console, download_queue):
out = ""
for e in download_queue:
out += '%4d: [' % e['piece_index'];
finished_blocks = e['finished_blocks']
requested_blocks = e['requested_blocks']
for index in xrange(len(e['peers']))
if (finished_blocks[index])
out += '#'
elif requested_blocks[index]
out += '+'
else
out += '-'
out += ']\n'
def main():
from optparse import OptionParser
@ -279,8 +297,8 @@ def main():
write_line(console, out)
peers = h.get_peer_info()
print_peer_info(console, peers)
print_peer_info(console, h.get_peer_info())
print_download_queue(console, h.get_download_queue())
if True and s.state != lt.torrent_status.seeding:
out = '\n'

View File

@ -84,6 +84,42 @@ void replace_trackers(torrent_handle& info, object trackers)
info.replace_trackers(result);
}
list get_download_queue(torrent_handle& handle)
{
list ret;
std::vector<partial_piece_info> downloading;
{
allow_threading_guard guard;
handle.get_download_queue(downloading);
}
for (std::vector<partial_piece_info>::iterator i = downloading.begin()
, end(downloading.end()); i != end; ++i)
{
dict partial_piece;
partial_piece["piece_index"] = i->piece_index;
partial_piece["blocks_in_piece"] = i->blocks_in_piece;
list requested;
list finished;
list peer;
for (int k = 0; k < i->blocks_in_piece; ++k)
{
requested.extend(i->requested_blocks[k]);
finished.extend(i->finished_blocks[k]);
peer.extend(i->peer[k]);
}
partial_piece["requested_blocks"] = requested;
partial_piece["finished_blocks"] = finished;
partial_piece["peer"] = peer;
ret.extend(partial_piece);
}
return ret;
}
void bind_torrent_handle()
{
void (torrent_handle::*force_reannounce0)() const = &torrent_handle::force_reannounce;
@ -123,6 +159,7 @@ void bind_torrent_handle()
.def("trackers", range(begin_trackers, end_trackers))
.def("replace_trackers", replace_trackers)
.def("get_peer_info", get_peer_info)
.def("get_download_queue", get_download_queue)
;
}