diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-01-26 18:36:09 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-01-26 18:36:09 +0900 |
| commit | 1e4f301ec1d64ada5926facb0115d029c2995c38 (patch) | |
| tree | d3fa2e51a6075cadf6a29718345c6904846fe299 /src/BtSeederStateChoke.cc | |
| parent | ba69f5c0c318132bb95c561f89488c754341ee96 (diff) | |
Remove PeerStorage::getActivePeers() and add getUsedPeers() instead
PeerStorage::getUsedPeers() returns non-active peers, so caller must
call Peer::isActive() to get active peers.
Diffstat (limited to 'src/BtSeederStateChoke.cc')
| -rw-r--r-- | src/BtSeederStateChoke.cc | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/src/BtSeederStateChoke.cc b/src/BtSeederStateChoke.cc index cf73e8b1..57a96609 100644 --- a/src/BtSeederStateChoke.cc +++ b/src/BtSeederStateChoke.cc @@ -117,12 +117,6 @@ void BtSeederStateChoke::PeerEntry::disableOptUnchoking() peer_->optUnchoking(false); } -bool BtSeederStateChoke::NotInterestedPeer::operator() - (const PeerEntry& peerEntry) const -{ - return !peerEntry.getPeer()->peerInterested(); -} - void BtSeederStateChoke::unchoke (std::vector<BtSeederStateChoke::PeerEntry>& peers) { @@ -151,33 +145,19 @@ void BtSeederStateChoke::unchoke } } -namespace { -class ChokingRequired { -public: - void operator()(const SharedHandle<Peer>& peer) const - { - peer->chokingRequired(true); - } -}; -} // namespace - -void -BtSeederStateChoke::executeChoke -(const std::vector<SharedHandle<Peer> >& peerSet) +void BtSeederStateChoke::executeChoke(const PeerSet& peerSet) { A2_LOG_INFO(fmt("Seeder state, %d choke round started", round_)); lastRound_ = global::wallclock(); std::vector<PeerEntry> peerEntries; - - std::for_each(peerSet.begin(), peerSet.end(), ChokingRequired()); - - std::transform(peerSet.begin(), peerSet.end(), - std::back_inserter(peerEntries), GenPeerEntry()); - - peerEntries.erase(std::remove_if(peerEntries.begin(), peerEntries.end(), - NotInterestedPeer()), - peerEntries.end()); + for(PeerSet::const_iterator i = peerSet.begin(), eoi = peerSet.end(); + i != eoi; ++i) { + if((*i)->isActive() && (*i)->peerInterested()) { + (*i)->chokingRequired(true); + peerEntries.push_back(PeerEntry(*i)); + } + } unchoke(peerEntries); |
