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);
// 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
void peer_is_interesting(peer_connection& c);

View File

@ -1314,35 +1314,30 @@ namespace libtorrent
}
// 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;
// assert(c.is_disconnecting());
bool unchoked = false;
peer* p = c.peer_info_struct();
// if we couldn't find the connection in our list, just ignore it.
if (p == 0) return;
#warning extract policy::peer pointer from c
iterator i = std::find_if(
assert(std::find_if(
m_peers.begin()
, 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.
if (i == m_peers.end()) return;
assert(i->connection == &c);
i->connection = 0;
i->optimistically_unchoked = false;
p->connection = 0;
p->optimistically_unchoked = false;
i->connected = time_now();
if (!c.is_choked() && !m_torrent->is_aborted())
{
unchoked = true;
}
p->connected = time_now();
if (c.failed())
{
++i->failcount;
// i->connected = time_now();
++p->failcount;
// p->connected = time_now();
}
// if the share ratio is 0 (infinite), the
@ -1354,25 +1349,8 @@ namespace libtorrent
assert(c.share_diff() < std::numeric_limits<size_type>::max());
m_available_free_upload += c.share_diff();
}
i->prev_amount_download += c.statistics().total_payload_download();
i->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);
p->prev_amount_download += c.statistics().total_payload_download();
p->prev_amount_upload += c.statistics().total_payload_upload();
}
void policy::peer_is_interesting(peer_connection& c)