back ported feature to expose which pieces have been verified in seed_mode and exposes it in client_test (initially implemented in the libtorrent_aio branch)
This commit is contained in:
parent
9564636fd2
commit
f6554bad08
|
@ -2193,7 +2193,9 @@ Its declaration looks like this::
|
||||||
{
|
{
|
||||||
query_distributed_copies = 1,
|
query_distributed_copies = 1,
|
||||||
query_accurate_download_counters = 2,
|
query_accurate_download_counters = 2,
|
||||||
query_last_seen_complete = 4
|
query_last_seen_complete = 4,
|
||||||
|
query_pieces = 8,
|
||||||
|
query_verified_pieces = 16
|
||||||
};
|
};
|
||||||
|
|
||||||
torrent_status status(boost::uint32_t flags = 0xffffffff);
|
torrent_status status(boost::uint32_t flags = 0xffffffff);
|
||||||
|
@ -3177,6 +3179,12 @@ By default everything is included. The flags you can use to decide what to *incl
|
||||||
* ``query_last_seen_complete``
|
* ``query_last_seen_complete``
|
||||||
includes ``last_seen_complete``.
|
includes ``last_seen_complete``.
|
||||||
|
|
||||||
|
* ``query_pieces``
|
||||||
|
includes ``pieces``.
|
||||||
|
|
||||||
|
* ``query_verified_pieces``
|
||||||
|
includes ``verified_pieces`` (only applies to torrents in *seed mode*).
|
||||||
|
|
||||||
|
|
||||||
get_download_queue()
|
get_download_queue()
|
||||||
--------------------
|
--------------------
|
||||||
|
@ -3350,6 +3358,8 @@ It contains the following fields::
|
||||||
int connect_candidates;
|
int connect_candidates;
|
||||||
|
|
||||||
bitfield pieces;
|
bitfield pieces;
|
||||||
|
bitfield verified_pieces;
|
||||||
|
|
||||||
int num_pieces;
|
int num_pieces;
|
||||||
|
|
||||||
size_type total_done;
|
size_type total_done;
|
||||||
|
@ -3520,6 +3530,10 @@ order block). This is supposed to be as low as possible.
|
||||||
the pieces we don't have. It's a pointer and may be set to 0 if the torrent isn't
|
the pieces we don't have. It's a pointer and may be set to 0 if the torrent isn't
|
||||||
downloading or seeding.
|
downloading or seeding.
|
||||||
|
|
||||||
|
``verified_pieces`` is a bitmask representing which pieces has had their hash
|
||||||
|
checked. This only applies to torrents in *seed mode*. If the torrent is not
|
||||||
|
in seed mode, this bitmask may be empty.
|
||||||
|
|
||||||
``num_pieces`` is the number of pieces that has been downloaded. It is equivalent
|
``num_pieces`` is the number of pieces that has been downloaded. It is equivalent
|
||||||
to: ``std::accumulate(pieces->begin(), pieces->end())``. So you don't have to
|
to: ``std::accumulate(pieces->begin(), pieces->end())``. So you don't have to
|
||||||
count yourself. This can be used to see if anything has updated since last time
|
count yourself. This can be used to see if anything has updated since last time
|
||||||
|
|
|
@ -1414,7 +1414,9 @@ int main(int argc, char* argv[])
|
||||||
// is a somewhat expensive operation, don't do it by default for
|
// is a somewhat expensive operation, don't do it by default for
|
||||||
// all torrents
|
// all torrents
|
||||||
handles[active_torrent] = handles[active_torrent].handle.status(
|
handles[active_torrent] = handles[active_torrent].handle.status(
|
||||||
torrent_handle::query_distributed_copies);
|
torrent_handle::query_distributed_copies
|
||||||
|
| torrent_handle::query_pieces
|
||||||
|
| torrent_handle::query_verified_pieces);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<feed_handle> feeds;
|
std::vector<feed_handle> feeds;
|
||||||
|
@ -1853,12 +1855,19 @@ int main(int argc, char* argv[])
|
||||||
out += str;
|
out += str;
|
||||||
++lines_printed;
|
++lines_printed;
|
||||||
|
|
||||||
if (print_piece_bar && s.state != torrent_status::seeding)
|
if (print_piece_bar && (s.state != torrent_status::seeding || s.seed_mode))
|
||||||
{
|
{
|
||||||
out += " ";
|
out += " ";
|
||||||
out += piece_bar(s.pieces, terminal_width - 7);
|
out += piece_bar(s.pieces, terminal_width - 7);
|
||||||
out += "\n";
|
out += "\n";
|
||||||
++lines_printed;
|
++lines_printed;
|
||||||
|
if (s.seed_mode)
|
||||||
|
{
|
||||||
|
out += " ";
|
||||||
|
out += piece_bar(s.verified_pieces, terminal_width - 7);
|
||||||
|
out += "\n";
|
||||||
|
++lines_printed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s.state != torrent_status::queued_for_checking && s.state != torrent_status::checking_files)
|
if (s.state != torrent_status::queued_for_checking && s.state != torrent_status::checking_files)
|
||||||
|
|
|
@ -214,7 +214,7 @@ namespace libtorrent
|
||||||
, dht_announce_interval(15 * 60)
|
, dht_announce_interval(15 * 60)
|
||||||
, udp_tracker_token_expiry(60)
|
, udp_tracker_token_expiry(60)
|
||||||
, volatile_read_cache(false)
|
, volatile_read_cache(false)
|
||||||
, guided_read_cache(true)
|
, guided_read_cache(false)
|
||||||
, default_cache_min_age(1)
|
, default_cache_min_age(1)
|
||||||
, num_optimistic_unchoke_slots(0)
|
, num_optimistic_unchoke_slots(0)
|
||||||
, no_atime_storage(true)
|
, no_atime_storage(true)
|
||||||
|
|
|
@ -169,7 +169,9 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
query_distributed_copies = 1,
|
query_distributed_copies = 1,
|
||||||
query_accurate_download_counters = 2,
|
query_accurate_download_counters = 2,
|
||||||
query_last_seen_complete = 4
|
query_last_seen_complete = 4,
|
||||||
|
query_pieces = 8,
|
||||||
|
query_verified_pieces = 16
|
||||||
};
|
};
|
||||||
|
|
||||||
// the flags specify which fields are calculated. By default everything
|
// the flags specify which fields are calculated. By default everything
|
||||||
|
@ -574,6 +576,7 @@ namespace libtorrent
|
||||||
int connect_candidates;
|
int connect_candidates;
|
||||||
|
|
||||||
bitfield pieces;
|
bitfield pieces;
|
||||||
|
bitfield verified_pieces;
|
||||||
|
|
||||||
// this is the number of pieces the client has
|
// this is the number of pieces the client has
|
||||||
// downloaded. it is equal to:
|
// downloaded. it is equal to:
|
||||||
|
|
|
@ -7567,6 +7567,11 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((flags & torrent_handle::query_verified_pieces))
|
||||||
|
{
|
||||||
|
st->verified_pieces = m_verified;
|
||||||
|
}
|
||||||
|
|
||||||
st->num_uploads = m_num_uploads;
|
st->num_uploads = m_num_uploads;
|
||||||
st->uploads_limit = m_max_uploads;
|
st->uploads_limit = m_max_uploads;
|
||||||
st->num_connections = int(m_connections.size());
|
st->num_connections = int(m_connections.size());
|
||||||
|
|
Loading…
Reference in New Issue