optimized policy and removed #warning

This commit is contained in:
Arvid Norberg
2007-08-16 23:53:14 +00:00
parent b05500570c
commit d00ce3b28b
2 changed files with 16 additions and 38 deletions

View File

@@ -89,7 +89,7 @@ namespace libtorrent
void new_connection(peer_connection& c); void new_connection(peer_connection& c);
// the given connection was just closed // the given connection was just closed
void connection_closed(const peer_connection& c); void connection_closed(const peer_connection& c) throw();
// the peer has got at least one interesting piece // the peer has got at least one interesting piece
void peer_is_interesting(peer_connection& c); void peer_is_interesting(peer_connection& c);

View File

@@ -1314,35 +1314,30 @@ namespace libtorrent
} }
// this is called whenever a peer connection is closed // this is called whenever a peer connection is closed
void policy::connection_closed(const peer_connection& c) try void policy::connection_closed(const peer_connection& c) throw()
{ {
INVARIANT_CHECK; INVARIANT_CHECK;
// assert(c.is_disconnecting()); peer* p = c.peer_info_struct();
bool unchoked = false; // if we couldn't find the connection in our list, just ignore it.
if (p == 0) return;
#warning extract policy::peer pointer from c assert(std::find_if(
iterator i = std::find_if(
m_peers.begin() m_peers.begin()
, m_peers.end() , m_peers.end()
, match_peer_connection(c)); , match_peer_connection(c))
!= m_peers.end());
assert(p->connection == &c);
// if we couldn't find the connection in our list, just ignore it. p->connection = 0;
if (i == m_peers.end()) return; p->optimistically_unchoked = false;
assert(i->connection == &c);
i->connection = 0;
i->optimistically_unchoked = false;
i->connected = time_now(); p->connected = time_now();
if (!c.is_choked() && !m_torrent->is_aborted())
{
unchoked = true;
}
if (c.failed()) if (c.failed())
{ {
++i->failcount; ++p->failcount;
// i->connected = time_now(); // p->connected = time_now();
} }
// if the share ratio is 0 (infinite), the // if the share ratio is 0 (infinite), the
@@ -1354,25 +1349,8 @@ namespace libtorrent
assert(c.share_diff() < std::numeric_limits<size_type>::max()); assert(c.share_diff() < std::numeric_limits<size_type>::max());
m_available_free_upload += c.share_diff(); m_available_free_upload += c.share_diff();
} }
i->prev_amount_download += c.statistics().total_payload_download(); p->prev_amount_download += c.statistics().total_payload_download();
i->prev_amount_upload += c.statistics().total_payload_upload(); p->prev_amount_upload += c.statistics().total_payload_upload();
// if (unchoked)
// {
// if the peer that is diconnecting is unchoked
// then unchoke another peer in order to maintain
// the total number of unchoked peers
// --m_num_unchoked;
// if (m_torrent->is_seed()) seed_unchoke_one_peer();
// else unchoke_one_peer();
// }
}
catch (std::exception& e)
{
#ifndef NDEBUG
std::string err = e.what();
#endif
assert(false);
} }
void policy::peer_is_interesting(peer_connection& c) void policy::peer_is_interesting(peer_connection& c)