*** empty log message ***
This commit is contained in:
parent
f32c3ce918
commit
029e185a1e
|
@ -282,7 +282,7 @@ int main(int argc, char* argv[])
|
||||||
<< "u: " << add_suffix(i->up_speed) << "/s "
|
<< "u: " << add_suffix(i->up_speed) << "/s "
|
||||||
<< "(" << add_suffix(i->total_upload) << ") "
|
<< "(" << add_suffix(i->total_upload) << ") "
|
||||||
// << "df: " << add_suffix((int)i->total_download - (int)i->total_upload) << " "
|
// << "df: " << add_suffix((int)i->total_download - (int)i->total_upload) << " "
|
||||||
<< "b: " << add_suffix(i->load_balancing) << "/s "
|
<< "b: " << add_suffix(i->load_balancing) << " "
|
||||||
<< "f: "
|
<< "f: "
|
||||||
<< static_cast<const char*>((i->flags & peer_info::interesting)?"I":"_")
|
<< static_cast<const char*>((i->flags & peer_info::interesting)?"I":"_")
|
||||||
<< static_cast<const char*>((i->flags & peer_info::choked)?"C":"_")
|
<< static_cast<const char*>((i->flags & peer_info::choked)?"C":"_")
|
||||||
|
|
|
@ -56,7 +56,7 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
session s(6881, "E\x1");
|
session s(6881);
|
||||||
|
|
||||||
std::ifstream in(argv[1], std::ios_base::binary);
|
std::ifstream in(argv[1], std::ios_base::binary);
|
||||||
in.unsetf(std::ios_base::skipws);
|
in.unsetf(std::ios_base::skipws);
|
||||||
|
|
|
@ -61,10 +61,10 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
std::stringstream s;
|
std::stringstream s;
|
||||||
s << "-" << id[0] << id[1]
|
s << "-" << id[0] << id[1]
|
||||||
<< major_version
|
<< (int)major_version
|
||||||
<< minor_version
|
<< (int)minor_version
|
||||||
<< revision_version
|
<< (int)revision_version
|
||||||
<< tag_version << "-";
|
<< (int)tag_version << "-";
|
||||||
return s.str();
|
return s.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -192,6 +192,9 @@ namespace libtorrent
|
||||||
bool have_piece(unsigned int index) const
|
bool have_piece(unsigned int index) const
|
||||||
{ return m_have_pieces[index]; }
|
{ return m_have_pieces[index]; }
|
||||||
|
|
||||||
|
const std::vector<bool>& pieces() const
|
||||||
|
{ return m_have_pieces; }
|
||||||
|
|
||||||
// when we get a have- or bitfield- messages, this is called for every
|
// when we get a have- or bitfield- messages, this is called for every
|
||||||
// piece a peer has gained.
|
// piece a peer has gained.
|
||||||
// returns true if this piece is interesting (i.e. if we would like to download it)
|
// returns true if this piece is interesting (i.e. if we would like to download it)
|
||||||
|
|
|
@ -377,7 +377,7 @@ bool libtorrent::peer_connection::dispatch_message(int received)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_have_piece[index] = true;
|
m_have_piece[index] = true;
|
||||||
if (m_torrent->peer_has(index))
|
if (!m_torrent->peer_has(index) && !is_interesting())
|
||||||
m_torrent->get_policy().peer_is_interesting(*this);
|
m_torrent->get_policy().peer_is_interesting(*this);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -507,14 +507,45 @@ namespace libtorrent
|
||||||
|
|
||||||
void policy::piece_finished(int index, bool successfully_verified)
|
void policy::piece_finished(int index, bool successfully_verified)
|
||||||
{
|
{
|
||||||
|
if (successfully_verified)
|
||||||
|
{
|
||||||
|
// have all peers update their interested-flag
|
||||||
|
for (std::vector<peer>::iterator i = m_peers.begin();
|
||||||
|
i != m_peers.end();
|
||||||
|
++i)
|
||||||
|
{
|
||||||
|
if (i->connection == 0) continue;
|
||||||
|
// if we're not interested, we will not become interested
|
||||||
|
if (!i->connection->is_interesting()) continue;
|
||||||
|
|
||||||
|
bool interested = false;
|
||||||
|
const std::vector<bool>& peer_has = i->connection->get_bitfield();
|
||||||
|
const std::vector<bool>& we_have = m_torrent->pieces();
|
||||||
|
assert(we_have.size() == peer_has.size());
|
||||||
|
for (int j = 0; j != we_have.size(); ++j)
|
||||||
|
{
|
||||||
|
if (!we_have[j] && peer_has[j])
|
||||||
|
{
|
||||||
|
interested = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!interested)
|
||||||
|
i->connection->not_interested();
|
||||||
|
}
|
||||||
|
}
|
||||||
// TODO: if verification failed, mark the peers that were involved
|
// TODO: if verification failed, mark the peers that were involved
|
||||||
// in some way
|
// in some way
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: we must be able to get interested
|
||||||
|
// in a peer again, if a piece fails that
|
||||||
|
// this peer has.
|
||||||
void policy::block_finished(peer_connection& c, piece_block b)
|
void policy::block_finished(peer_connection& c, piece_block b)
|
||||||
{
|
{
|
||||||
// if the peer hasn't choked us, ask for another piece
|
// if the peer hasn't choked us, ask for another piece
|
||||||
if (!c.has_peer_choked()) request_a_block(*m_torrent, c);
|
if (!c.has_peer_choked())
|
||||||
|
request_a_block(*m_torrent, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is called when we are unchoked by a peer
|
// this is called when we are unchoked by a peer
|
||||||
|
|
|
@ -76,7 +76,7 @@ namespace
|
||||||
int quota_limit; // bandwidth limit
|
int quota_limit; // bandwidth limit
|
||||||
int estimated_upload_capacity; // estimated channel bandwidth
|
int estimated_upload_capacity; // estimated channel bandwidth
|
||||||
|
|
||||||
bool operator < (connection_info &other) const
|
bool operator < (const connection_info &other) const
|
||||||
{
|
{
|
||||||
return estimated_upload_capacity < other.estimated_upload_capacity;
|
return estimated_upload_capacity < other.estimated_upload_capacity;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue