share mode polish and remove old comment

This commit is contained in:
Arvid Norberg 2015-02-08 22:29:10 +00:00
parent 7395a91bf4
commit 678385f358
1 changed files with 5 additions and 8 deletions

View File

@ -9774,6 +9774,7 @@ namespace libtorrent
{ {
peer_connection* p = *i; peer_connection* p = *i;
if (p->is_connecting()) continue; if (p->is_connecting()) continue;
if (p->is_disconnecting()) continue;
++num_peers; ++num_peers;
if (p->is_seed()) if (p->is_seed())
{ {
@ -9782,8 +9783,10 @@ namespace libtorrent
} }
if (p->share_mode()) continue; if (p->share_mode()) continue;
if (p->upload_only()) continue;
if ((*i)->is_peer_interested()) ++num_interested; if ((*i)->is_peer_interested()) ++num_interested;
++num_downloaders; ++num_downloaders;
missing_pieces += pieces_in_torrent - p->num_have_pieces(); missing_pieces += pieces_in_torrent - p->num_have_pieces();
} }
@ -9811,7 +9814,8 @@ namespace libtorrent
std::random_shuffle(seeds.begin(), seeds.end()); std::random_shuffle(seeds.begin(), seeds.end());
TORRENT_ASSERT(to_disconnect <= int(seeds.size())); TORRENT_ASSERT(to_disconnect <= int(seeds.size()));
for (int i = 0; i < to_disconnect; ++i) for (int i = 0; i < to_disconnect; ++i)
seeds[i]->disconnect(errors::upload_upload_connection, peer_connection_interface::op_bittorrent); seeds[i]->disconnect(errors::upload_upload_connection
, peer_connection_interface::op_bittorrent);
} }
if (num_downloaders == 0) return; if (num_downloaders == 0) return;
@ -9890,13 +9894,6 @@ namespace libtorrent
< settings().get_int(settings_pack::share_mode_target)) < settings().get_int(settings_pack::share_mode_target))
return; return;
// we might be able to do better than a share ratio of 2 if there are
// enough downloaders of the pieces we already have.
// TODO: 2 go through the pieces we have and count the total number
// of downloaders we have. Only count peers that are interested in us
// since some peers might not send have messages for pieces we have.
// if num_interested == 0, we need to pick a new piece
// now, pick one of the rarest pieces to download // now, pick one of the rarest pieces to download
int pick = random() % rarest_pieces.size(); int pick = random() % rarest_pieces.size();
bool was_finished = is_finished(); bool was_finished = is_finished();