added priority to connection queue. trackers and upnp connections have higher priority than peers

This commit is contained in:
Arvid Norberg
2008-03-12 07:44:27 +00:00
parent e5c77c284a
commit cd65fb8b0c
6 changed files with 44 additions and 20 deletions

View File

@@ -52,18 +52,34 @@ namespace libtorrent
void connection_queue::enqueue(boost::function<void(int)> const& on_connect
, boost::function<void()> const& on_timeout
, time_duration timeout)
, time_duration timeout, int priority)
{
mutex_t::scoped_lock l(m_mutex);
INVARIANT_CHECK;
m_queue.push_back(entry());
entry& e = m_queue.back();
e.on_connect = on_connect;
e.on_timeout = on_timeout;
e.ticket = m_next_ticket;
e.timeout = timeout;
TORRENT_ASSERT(priority >= 0);
TORRENT_ASSERT(priority < 2);
entry* e = 0;
switch (priority)
{
case 0:
m_queue.push_back(entry());
e = &m_queue.back();
break;
case 1:
m_queue.push_front(entry());
e = &m_queue.front();
break;
}
e->priority = priority;
e->on_connect = on_connect;
e->on_timeout = on_timeout;
e->ticket = m_next_ticket;
e->timeout = timeout;
++m_next_ticket;
try_connect();
}