summaryrefslogtreecommitdiff
path: root/src/DefaultPeerStorage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-01-31 23:00:05 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-01-31 23:00:05 +0900
commit8902c2a8399f1f2234e9598697de2f91d6c4295e (patch)
tree8b7f4952d4d6584a80cbb458c822290380f05649 /src/DefaultPeerStorage.cc
parent27974108f059d2e4ac2767c304fdbd8358caad07 (diff)
Rewritten DefaultPeerStorage::addPeer(const std::vector<SharedHandle<Peer> >&)
Diffstat (limited to 'src/DefaultPeerStorage.cc')
-rw-r--r--src/DefaultPeerStorage.cc22
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)