2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

Changed method signature:
	PeerStorage::getActivePeers
	* src/DHTPeerAnnounceEntry.cc
	* src/DefaultPeerStorage.cc
	* src/DefaultPeerStorage.h
	* src/PeerStorage.h
	* test/DefaultPeerStorageTest.cc
	* test/MockPeerStorage.h
pull/1/head
Tatsuhiro Tsujikawa 2008-05-11 12:58:48 +00:00
parent 33e916547a
commit 05f0646112
7 changed files with 46 additions and 21 deletions

View File

@ -1,3 +1,14 @@
2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Changed method signature:
PeerStorage::getActivePeers
* src/DHTPeerAnnounceEntry.cc
* src/DefaultPeerStorage.cc
* src/DefaultPeerStorage.h
* src/PeerStorage.h
* test/DefaultPeerStorageTest.cc
* test/MockPeerStorage.h
2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> 2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Changed method signature: Changed method signature:

View File

@ -112,8 +112,7 @@ void DHTPeerAnnounceEntry::getPeers(std::deque<SharedHandle<Peer> >& peers) cons
if(!_btCtx.isNull()) { if(!_btCtx.isNull()) {
SharedHandle<PeerStorage> peerStorage = PEER_STORAGE(_btCtx); SharedHandle<PeerStorage> peerStorage = PEER_STORAGE(_btCtx);
if(!peerStorage.isNull()) { if(!peerStorage.isNull()) {
const Peers& activePeers = peerStorage->getActivePeers(); peerStorage->getActivePeers(peers);
peers.insert(peers.end(), activePeers.begin(), activePeers.end());
} }
} }
} }

View File

@ -162,20 +162,22 @@ bool DefaultPeerStorage::isPeerAvailable() {
class CollectActivePeer { class CollectActivePeer {
private: private:
Peers _activePeers; std::deque<SharedHandle<Peer> >& _activePeers;
public: public:
void operator()(const PeerHandle& peer) CollectActivePeer(std::deque<SharedHandle<Peer> >& activePeers):
_activePeers(activePeers) {}
void operator()(const SharedHandle<Peer>& peer)
{ {
if(peer->isActive()) { if(peer->isActive()) {
_activePeers.push_back(peer); _activePeers.push_back(peer);
} }
} }
const Peers& getActivePeers() { return _activePeers; }
}; };
Peers DefaultPeerStorage::getActivePeers() { void DefaultPeerStorage::getActivePeers(std::deque<SharedHandle<Peer> >& activePeers)
return std::for_each(peers.begin(), peers.end(), CollectActivePeer()).getActivePeers(); {
std::for_each(peers.begin(), peers.end(), CollectActivePeer(activePeers));
} }
class CalculateStat { class CalculateStat {
@ -267,10 +269,12 @@ bool DefaultPeerStorage::chokeRoundIntervalElapsed()
void DefaultPeerStorage::executeChoke() void DefaultPeerStorage::executeChoke()
{ {
std::deque<SharedHandle<Peer> > activePeers;
getActivePeers(activePeers);
if(PIECE_STORAGE(btContext)->downloadFinished()) { if(PIECE_STORAGE(btContext)->downloadFinished()) {
return _seederStateChoke->executeChoke(getActivePeers()); return _seederStateChoke->executeChoke(activePeers);
} else { } else {
return _leecherStateChoke->executeChoke(getActivePeers()); return _leecherStateChoke->executeChoke(activePeers);
} }
} }

View File

@ -90,7 +90,7 @@ public:
virtual bool isPeerAvailable(); virtual bool isPeerAvailable();
virtual std::deque<SharedHandle<Peer> > getActivePeers(); virtual void getActivePeers(std::deque<SharedHandle<Peer> >& peers);
virtual TransferStat calculateStat(); virtual TransferStat calculateStat();

View File

@ -78,7 +78,7 @@ public:
/** /**
* Returns the list of peers which are currently connected from localhost. * Returns the list of peers which are currently connected from localhost.
*/ */
virtual std::deque<SharedHandle<Peer> > getActivePeers() = 0; virtual void getActivePeers(std::deque<SharedHandle<Peer> >& peers) = 0;
/** /**
* Calculates current download/upload statistics. * Calculates current download/upload statistics.

View File

@ -174,20 +174,31 @@ void DefaultPeerStorageTest::testIsPeerAvailable() {
void DefaultPeerStorageTest::testActivatePeer() { void DefaultPeerStorageTest::testActivatePeer() {
DefaultPeerStorage ps(btContext, option); DefaultPeerStorage ps(btContext, option);
CPPUNIT_ASSERT_EQUAL((size_t)0, ps.getActivePeers().size()); {
std::deque<SharedHandle<Peer> > peers;
ps.getActivePeers(peers);
CPPUNIT_ASSERT_EQUAL((size_t)0, peers.size());
}
SharedHandle<Peer> peer1(new Peer("192.168.0.1", 6889)); SharedHandle<Peer> peer1(new Peer("192.168.0.1", 6889));
ps.addPeer(peer1); ps.addPeer(peer1);
std::deque<SharedHandle<Peer> > activePeer = ps.getActivePeers(); {
std::deque<SharedHandle<Peer> > activePeers;
ps.getActivePeers(activePeers);
CPPUNIT_ASSERT_EQUAL((size_t)0, ps.getActivePeers().size()); CPPUNIT_ASSERT_EQUAL((size_t)0, activePeers.size());
}
{
peer1->allocateSessionResource(btContext->getPieceLength(),
btContext->getTotalLength());
peer1->allocateSessionResource(btContext->getPieceLength(), std::deque<SharedHandle<Peer> > activePeers;
btContext->getTotalLength()); ps.getActivePeers(activePeers);
CPPUNIT_ASSERT_EQUAL((size_t)1, ps.getActivePeers().size()); CPPUNIT_ASSERT_EQUAL((size_t)1, activePeers.size());
}
} }
void DefaultPeerStorageTest::testCalculateStat() { void DefaultPeerStorageTest::testCalculateStat() {

View File

@ -42,8 +42,8 @@ public:
this->activePeers = activePeers; this->activePeers = activePeers;
} }
virtual std::deque<SharedHandle<Peer> > getActivePeers() { virtual void getActivePeers(std::deque<SharedHandle<Peer> >& peers) {
return activePeers; peers.insert(peers.end(), activePeers.begin(), activePeers.end());
} }
virtual TransferStat calculateStat() { virtual TransferStat calculateStat() {