*** empty log message ***

This commit is contained in:
Magnus Jonsson 2004-02-25 13:18:41 +00:00
parent 6d614bc6d3
commit 7af8beff02
5 changed files with 24 additions and 19 deletions

View File

@ -170,6 +170,9 @@ namespace libtorrent
peer* find_unchoke_candidate(); peer* find_unchoke_candidate();
void connect_peer(peer *);
bool connect_one_peer(); bool connect_one_peer();
bool disconnect_one_peer(); bool disconnect_one_peer();
peer* find_disconnect_candidate(); peer* find_disconnect_candidate();

View File

@ -208,7 +208,7 @@ namespace libtorrent
int toGive = 1+std::min(max_give-1,r->used); int toGive = 1+std::min(max_give-1,r->used);
resources_to_distribute-=give(r,toGive); resources_to_distribute-=give(r,toGive);
} }
#elif 1 #elif 0
size_type total_used=0; size_type total_used=0;
size_type max_used=0; size_type max_used=0;
for(int i = 0;i < (int)requests.size();++i) for(int i = 0;i < (int)requests.size();++i)
@ -288,13 +288,13 @@ namespace libtorrent
kNumer=1; kNumer=1;
kDenom=max_used; kDenom=max_used;
} }
/*
if(kNumer > kDenom) if(kNumer > kDenom)
{ {
kNumer=1; kNumer=1;
kDenom=1; kDenom=1;
} }
*/
for(int i = 0;i < (int)requests.size() && resources_to_distribute;++i) for(int i = 0;i < (int)requests.size() && resources_to_distribute;++i)
{ {
resource_request *r=requests[i]; resource_request *r=requests[i];

View File

@ -1232,7 +1232,7 @@ namespace libtorrent
// client has sent us. This is the mean to // client has sent us. This is the mean to
// maintain the share ratio given by m_ratio // maintain the share ratio given by m_ratio
// with all peers. // with all peers.
/*
if (m_torrent->is_seed() || is_choked() || m_torrent->ratio()==0.0f) if (m_torrent->is_seed() || is_choked() || m_torrent->ratio()==0.0f)
{ {
// if we have downloaded more than one piece more // if we have downloaded more than one piece more
@ -1241,19 +1241,19 @@ namespace libtorrent
if(!m_send_buffer.empty() || (!m_requests.empty() && !is_choked())) if(!m_send_buffer.empty() || (!m_requests.empty() && !is_choked()))
upload_bandwidth.wanted = std::numeric_limits<int>::max(); upload_bandwidth.wanted = std::numeric_limits<int>::max();
else else
upload_bandwidth.wanted = 0; upload_bandwidth.wanted = 1;
} }
else else
{ {
double bias = 0x20000 + m_free_upload; double bias = 0x20000 + m_free_upload;
double break_even_time = 10; double break_even_time = 5;
double have_uploaded = (double)m_statistics.total_payload_upload(); double have_uploaded = (double)m_statistics.total_payload_upload();
double have_downloaded = (double)m_statistics.total_payload_download(); double have_downloaded = (double)m_statistics.total_payload_download();
double download_speed = m_statistics.download_rate(); double download_speed = m_statistics.download_rate();
double soon_downloaded = double soon_downloaded =
have_downloaded+download_speed * 2 * break_even_time; have_downloaded+download_speed * 1.5 * break_even_time;
double upload_speed_limit = (soon_downloaded*m_torrent->ratio() double upload_speed_limit = (soon_downloaded*m_torrent->ratio()
- have_uploaded + bias) / break_even_time; - have_uploaded + bias) / break_even_time;
@ -1263,8 +1263,8 @@ namespace libtorrent
upload_bandwidth.wanted = (int) upload_speed_limit; upload_bandwidth.wanted = (int) upload_speed_limit;
} }
*/
/*
size_type diff = share_diff(); size_type diff = share_diff();
enum { block_limit = 2 }; // how many blocks difference is considered unfair enum { block_limit = 2 }; // how many blocks difference is considered unfair
@ -1300,7 +1300,6 @@ namespace libtorrent
// the maximum send_quota given our download rate from this peer // the maximum send_quota given our download rate from this peer
if (upload_bandwidth.wanted < 256) upload_bandwidth.wanted = 256; if (upload_bandwidth.wanted < 256) upload_bandwidth.wanted = 256;
} }
*/
} }
// -------------------------- // --------------------------

View File

@ -779,9 +779,7 @@ namespace libtorrent
if(m_torrent->num_peers() < m_max_connections) if(m_torrent->num_peers() < m_max_connections)
{ {
i->connection = &m_torrent->connect_to_peer(remote); connect_peer(&*i);
i->connected = boost::posix_time::second_clock::local_time();
m_last_optimistic_disconnect=boost::posix_time::second_clock::local_time();
} }
return; return;
} }
@ -910,13 +908,20 @@ namespace libtorrent
assert(!p->banned); assert(!p->banned);
assert(!p->connection); assert(!p->connection);
assert(p->type==peer::connectable); assert(p->type==peer::connectable);
connect_peer(p);
return true;
}
void policy::connect_peer(peer *p)
{
p->connection = &m_torrent->connect_to_peer(p->id); p->connection = &m_torrent->connect_to_peer(p->id);
p->connection->add_stat(p->prev_amount_download, p->prev_amount_upload); p->connection->add_stat(p->prev_amount_download, p->prev_amount_upload);
p->prev_amount_download = 0; p->prev_amount_download = 0;
p->prev_amount_upload = 0; p->prev_amount_upload = 0;
p->connected = boost::posix_time::second_clock::local_time(); p->connected =
return true; m_last_optimistic_disconnect =
boost::posix_time::second_clock::local_time();
} }
bool policy::disconnect_one_peer() bool policy::disconnect_one_peer()
@ -940,8 +945,6 @@ namespace libtorrent
assert(i->connection == &c); assert(i->connection == &c);
i->connected = boost::posix_time::second_clock::local_time(); i->connected = boost::posix_time::second_clock::local_time();
i->prev_amount_download += c.statistics().total_payload_download();
i->prev_amount_upload += c.statistics().total_payload_upload();
if (!i->connection->is_choked() && !m_torrent->is_aborted()) if (!i->connection->is_choked() && !m_torrent->is_aborted())
{ {
--m_num_unchoked; --m_num_unchoked;
@ -956,6 +959,8 @@ namespace libtorrent
assert(i->connection->share_diff() < std::numeric_limits<int>::max()); assert(i->connection->share_diff() < std::numeric_limits<int>::max());
m_available_free_upload += i->connection->share_diff(); m_available_free_upload += i->connection->share_diff();
} }
i->prev_amount_download += c.statistics().total_payload_download();
i->prev_amount_upload += c.statistics().total_payload_upload();
i->connection = 0; i->connection = 0;
} }

View File

@ -454,8 +454,6 @@ namespace libtorrent
p.id = peer->get_peer_id(); p.id = peer->get_peer_id();
p.ip = peer->get_socket()->sender(); p.ip = peer->get_socket()->sender();
// TODO: add the prev_amount_downloaded and prev_amount_uploaded
// from the peer list in the policy
p.total_download = statistics.total_payload_download(); p.total_download = statistics.total_payload_download();
p.total_upload = statistics.total_payload_upload(); p.total_upload = statistics.total_payload_upload();