diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-31 23:00:05 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-31 23:00:05 +0900 |
| commit | 8902c2a8399f1f2234e9598697de2f91d6c4295e (patch) | |
| tree | 8b7f4952d4d6584a80cbb458c822290380f05649 /src/DefaultPeerStorage.cc | |
| parent | 27974108f059d2e4ac2767c304fdbd8358caad07 (diff) | |
Rewritten DefaultPeerStorage::addPeer(const std::vector<SharedHandle<Peer> >&)
Diffstat (limited to 'src/DefaultPeerStorage.cc')
| -rw-r--r-- | src/DefaultPeerStorage.cc | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc index ac390acb..a67e75b6 100644 --- a/src/DefaultPeerStorage.cc +++ b/src/DefaultPeerStorage.cc @@ -113,19 +113,35 @@ bool DefaultPeerStorage::addPeer(const SharedHandle<Peer>& peer) { deleteUnusedPeer(peers_.size()-maxPeerListSize+1); } peers_.push_front(peer); + A2_LOG_DEBUG(fmt("Now peer list contains %lu peers", + static_cast<unsigned long>(peers_.size()))); return true; } void DefaultPeerStorage::addPeer(const std::vector<SharedHandle<Peer> >& peers) { + size_t maxPeerListSize = calculateMaxPeerListSize(btRuntime_); + size_t added = 0; for(std::vector<SharedHandle<Peer> >::const_iterator itr = peers.begin(), - eoi = peers.end(); itr != eoi; ++itr) { + eoi = peers.end(); itr != eoi && added < maxPeerListSize; ++itr) { const SharedHandle<Peer>& peer = *itr; - if(addPeer(peer)) { + if(isPeerAlreadyAdded(peer)) { + A2_LOG_DEBUG(fmt("Adding %s:%u is rejected because it has been already" + " added.", + peer->getIPAddress().c_str(), peer->getPort())); + continue; + } else { A2_LOG_DEBUG(fmt(MSG_ADDING_PEER, peer->getIPAddress().c_str(), peer->getPort())); } - } + peers_.push_front(peer); + ++added; + } + if(peers_.size() >= maxPeerListSize) { + deleteUnusedPeer(peers_.size()-maxPeerListSize); + } + A2_LOG_DEBUG(fmt("Now peer list contains %lu peers", + static_cast<unsigned long>(peers_.size()))); } void DefaultPeerStorage::addDroppedPeer(const SharedHandle<Peer>& peer) |
