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>
Changed method signature:

View File

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

View File

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

View File

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

View File

@ -78,7 +78,7 @@ public:
/**
* 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.

View File

@ -174,20 +174,31 @@ void DefaultPeerStorageTest::testIsPeerAvailable() {
void DefaultPeerStorageTest::testActivatePeer() {
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));
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(),
btContext->getTotalLength());
CPPUNIT_ASSERT_EQUAL((size_t)1, ps.getActivePeers().size());
std::deque<SharedHandle<Peer> > activePeers;
ps.getActivePeers(activePeers);
CPPUNIT_ASSERT_EQUAL((size_t)1, activePeers.size());
}
}
void DefaultPeerStorageTest::testCalculateStat() {

View File

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