some more asserts related to bandwidth manager

This commit is contained in:
Arvid Norberg 2007-12-14 18:02:06 +00:00
parent 948f53a8af
commit ac28fa7b62
3 changed files with 43 additions and 8 deletions

View File

@ -203,10 +203,23 @@ struct bandwidth_manager
m_history_timer.cancel();
}
#ifndef NDEBUG
bool is_queued(PeerConnection const* peer)
{
for (typename queue_t::iterator i = m_queue.begin()
, end(m_queue.end()); i != end; ++i)
{
if (i->peer.get() == peer) return true;
}
return false;
}
#endif
// non prioritized means that, if there's a line for bandwidth,
// others will cut in front of the non-prioritized peers.
// this is used by web seeds
void request_bandwidth(intrusive_ptr<PeerConnection> peer
void request_bandwidth(intrusive_ptr<PeerConnection> const& peer
, int blk
, bool non_prioritized) throw()
{
@ -217,13 +230,7 @@ struct bandwidth_manager
// make sure this peer isn't already in line
// waiting for bandwidth
#ifndef NDEBUG
for (typename queue_t::iterator i = m_queue.begin()
, end(m_queue.end()); i != end; ++i)
{
TORRENT_ASSERT(i->peer < peer || peer < i->peer);
}
#endif
TORRENT_ASSERT(!is_queued(peer.get()));
boost::shared_ptr<Torrent> t = peer->associated_torrent().lock();

View File

@ -665,6 +665,10 @@ namespace libtorrent
// request is in progress.
bool m_writing;
bool m_reading;
#ifndef NDEBUG
bool m_requested_write_quota;
bool m_requested_read_quota;
#endif
// if set to non-zero, this peer will always prefer
// to request entire n pieces, rather than blocks.

View File

@ -132,6 +132,10 @@ namespace libtorrent
+ boost::lexical_cast<std::string>(m_remote.port()), m_ses.listen_port());
(*m_logger) << "*** OUTGOING CONNECTION\n";
#endif
#ifndef NDEBUG
m_requested_read_quota = false;
m_requested_write_quota = false;
#endif
boost::shared_ptr<torrent> t = m_torrent.lock();
TORRENT_ASSERT(t);
@ -215,6 +219,10 @@ namespace libtorrent
(*m_logger) << "*** INCOMING CONNECTION\n";
#endif
#ifndef NDEBUG
m_requested_read_quota = false;
m_requested_write_quota = false;
#endif
std::fill(m_peer_id.begin(), m_peer_id.end(), 0);
}
@ -2380,12 +2388,20 @@ namespace libtorrent
{
TORRENT_ASSERT(m_writing);
m_writing = false;
#ifndef NDEBUG
TORRENT_ASSERT(m_requested_write_quota);
m_requested_write_quota = false;
#endif
setup_send();
}
else if (channel == download_channel)
{
TORRENT_ASSERT(m_reading);
m_reading = false;
#ifndef NDEBUG
TORRENT_ASSERT(m_requested_read_quota);
m_requested_read_quota = false;
#endif
setup_receive();
}
}
@ -2434,6 +2450,10 @@ namespace libtorrent
TORRENT_ASSERT(!m_writing);
// peers that we are not interested in are non-prioritized
m_writing = true;
#ifndef NDEBUG
TORRENT_ASSERT(!m_requested_write_quota);
m_requested_write_quota = true;
#endif
t->request_bandwidth(upload_channel, self()
, !(is_interesting() && !has_peer_choked()));
}
@ -2488,6 +2508,10 @@ namespace libtorrent
(*m_logger) << "req bandwidth [ " << download_channel << " ]\n";
#endif
m_reading = true;
#ifndef NDEBUG
TORRENT_ASSERT(!m_requested_read_quota);
m_requested_read_quota = true;
#endif
t->request_bandwidth(download_channel, self(), m_non_prioritized);
}
return;