summaryrefslogtreecommitdiff
path: root/src/BtSeederStateChoke.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-01-26 18:36:09 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-01-26 18:36:09 +0900
commit1e4f301ec1d64ada5926facb0115d029c2995c38 (patch)
treed3fa2e51a6075cadf6a29718345c6904846fe299 /src/BtSeederStateChoke.cc
parentba69f5c0c318132bb95c561f89488c754341ee96 (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.cc36
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);