forked from premiere/premiere-libtorrent
*** empty log message ***
This commit is contained in:
parent
ac0921599d
commit
cb89ccf6be
|
@ -110,9 +110,10 @@ namespace libtorrent
|
||||||
|
|
||||||
// increases the peer count for the given piece
|
// increases the peer count for the given piece
|
||||||
// (is used when a HAVE or BITFIELD message is received)
|
// (is used when a HAVE or BITFIELD message is received)
|
||||||
// returns true if this piece was interesting
|
void inc_refcount(int index);
|
||||||
bool inc_refcount(int index);
|
|
||||||
|
|
||||||
|
// decreases the peer count for the given piece
|
||||||
|
// (used when a peer disconnects)
|
||||||
void dec_refcount(int index);
|
void dec_refcount(int index);
|
||||||
|
|
||||||
// This indicates that we just received this piece
|
// This indicates that we just received this piece
|
||||||
|
|
|
@ -197,17 +197,12 @@ namespace libtorrent
|
||||||
|
|
||||||
// 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)
|
void peer_has(int index)
|
||||||
bool peer_has(int index)
|
{ m_picker.inc_refcount(index); }
|
||||||
{
|
|
||||||
return m_picker.inc_refcount(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
// when peer disconnects, this is called for every piece it had
|
// when peer disconnects, this is called for every piece it had
|
||||||
void peer_lost(int index)
|
void peer_lost(int index)
|
||||||
{
|
{ m_picker.dec_refcount(index); }
|
||||||
m_picker.dec_refcount(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
int block_size() const { return m_block_size; }
|
int block_size() const { return m_block_size; }
|
||||||
|
|
||||||
|
|
|
@ -380,8 +380,10 @@ bool libtorrent::peer_connection::dispatch_message(int received)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_have_piece[index] = true;
|
m_have_piece[index] = true;
|
||||||
|
|
||||||
// TODO: maybe this if-statement should be moved into the policy
|
// TODO: maybe this if-statement should be moved into the policy
|
||||||
if (!m_torrent->peer_has(index) && !is_interesting())
|
m_torrent->peer_has(index);
|
||||||
|
if (!m_torrent->have_piece(index) && !is_interesting())
|
||||||
m_torrent->get_policy().peer_is_interesting(*this);
|
m_torrent->get_policy().peer_is_interesting(*this);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -401,8 +403,6 @@ bool libtorrent::peer_connection::dispatch_message(int received)
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
(*m_logger) << m_socket->sender().as_string() << " <== BITFIELD\n";
|
(*m_logger) << m_socket->sender().as_string() << " <== BITFIELD\n";
|
||||||
#endif
|
#endif
|
||||||
bool is_seed = true;
|
|
||||||
|
|
||||||
// build a vector of all pieces
|
// build a vector of all pieces
|
||||||
std::vector<int> piece_list;
|
std::vector<int> piece_list;
|
||||||
for (std::size_t i = 0; i < m_have_piece.size(); ++i)
|
for (std::size_t i = 0; i < m_have_piece.size(); ++i)
|
||||||
|
@ -418,7 +418,6 @@ bool libtorrent::peer_connection::dispatch_message(int received)
|
||||||
m_have_piece[i] = false;
|
m_have_piece[i] = false;
|
||||||
m_torrent->peer_lost(i);
|
m_torrent->peer_lost(i);
|
||||||
}
|
}
|
||||||
if (!have) is_seed = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// shuffle the piece list
|
// shuffle the piece list
|
||||||
|
@ -432,11 +431,12 @@ bool libtorrent::peer_connection::dispatch_message(int received)
|
||||||
++i)
|
++i)
|
||||||
{
|
{
|
||||||
int index = *i;
|
int index = *i;
|
||||||
if (m_torrent->peer_has(index))
|
m_torrent->peer_has(index);
|
||||||
|
if (!m_torrent->have_piece(index))
|
||||||
interesting = true;
|
interesting = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_seed)
|
if (piece_list.empty())
|
||||||
{
|
{
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
(*m_logger) << m_socket->sender().as_string() << " *** THIS IS A SEED ***\n";
|
(*m_logger) << m_socket->sender().as_string() << " *** THIS IS A SEED ***\n";
|
||||||
|
|
|
@ -326,7 +326,7 @@ namespace libtorrent
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool piece_picker::inc_refcount(int i)
|
void piece_picker::inc_refcount(int i)
|
||||||
{
|
{
|
||||||
assert(i >= 0);
|
assert(i >= 0);
|
||||||
assert(i < m_piece_map.size());
|
assert(i < m_piece_map.size());
|
||||||
|
@ -336,14 +336,16 @@ namespace libtorrent
|
||||||
|
|
||||||
m_piece_map[i].peer_count++;
|
m_piece_map[i].peer_count++;
|
||||||
|
|
||||||
if (index == 0xffffff) return false;
|
// if we have the piece, we don't have to move
|
||||||
|
// any entries in the piece_info vector
|
||||||
|
if (index == 0xffffff) return;
|
||||||
|
|
||||||
move(m_piece_map[i].downloading, peer_count, index);
|
move(m_piece_map[i].downloading, peer_count, index);
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
// integrity_check();
|
// integrity_check();
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void piece_picker::dec_refcount(int i)
|
void piece_picker::dec_refcount(int i)
|
||||||
|
|
|
@ -568,6 +568,8 @@ namespace libtorrent
|
||||||
// called when a peer is no longer interested in us
|
// called when a peer is no longer interested in us
|
||||||
void policy::not_interested(peer_connection& c)
|
void policy::not_interested(peer_connection& c)
|
||||||
{
|
{
|
||||||
|
// TODO: return the diff() of this peer to the
|
||||||
|
// pool of undistributed free upload
|
||||||
}
|
}
|
||||||
|
|
||||||
bool policy::unchoke_one_peer()
|
bool policy::unchoke_one_peer()
|
||||||
|
|
|
@ -411,9 +411,23 @@ namespace libtorrent
|
||||||
m_picker.abort_download(*i);
|
m_picker.abort_download(*i);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (std::size_t i = 0; i < torrent_file().num_pieces(); ++i)
|
std::vector<int> piece_list;
|
||||||
|
const std::vector<bool>& pieces = p->get_bitfield();
|
||||||
|
|
||||||
|
for (std::vector<bool>::const_iterator i = pieces.begin();
|
||||||
|
i != pieces.end();
|
||||||
|
++i)
|
||||||
{
|
{
|
||||||
if (p->has_piece(i)) peer_lost(i);
|
if (*i) piece_list.push_back(i - pieces.begin());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::random_shuffle(piece_list.begin(), piece_list.end());
|
||||||
|
|
||||||
|
for (std::vector<int>::iterator i = piece_list.begin();
|
||||||
|
i != piece_list.end();
|
||||||
|
++i)
|
||||||
|
{
|
||||||
|
peer_lost(*i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// std::cout << p->get_socket()->sender().as_string() << " *** DISCONNECT\n";
|
// std::cout << p->get_socket()->sender().as_string() << " *** DISCONNECT\n";
|
||||||
|
|
Loading…
Reference in New Issue