mirror of https://github.com/aria2/aria2
2009-06-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added countSeeder() function which counts seeder in the given iterator range. Use it in ConsoleStatCalc and XmlRpcMethodImpl. * src/ConsoleStatCalc.cc * src/Peer.h * src/XmlRpcMethodImpl.cc * test/PeerTest.ccpull/1/head
parent
4dc9217bb6
commit
b922020985
|
@ -1,3 +1,12 @@
|
|||
2009-06-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Added countSeeder() function which counts seeder in the given
|
||||
iterator range. Use it in ConsoleStatCalc and XmlRpcMethodImpl.
|
||||
* src/ConsoleStatCalc.cc
|
||||
* src/Peer.h
|
||||
* src/XmlRpcMethodImpl.cc
|
||||
* test/PeerTest.cc
|
||||
|
||||
2009-06-06 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Documented missing seeder in getPeers xml-rpc method.
|
||||
|
|
|
@ -120,7 +120,7 @@ static void printProgress
|
|||
std::deque<SharedHandle<Peer> > peers;
|
||||
ps->getActivePeers(peers);
|
||||
o << " " << "SEED:"
|
||||
<< std::count_if(peers.begin(), peers.end(), mem_fun_sh(&Peer::isSeeder));
|
||||
<< countSeeder(peers.begin(), peers.end());
|
||||
}
|
||||
#endif // ENABLE_BITTORRENT
|
||||
|
||||
|
|
|
@ -40,11 +40,13 @@
|
|||
#include <cassert>
|
||||
#include <string>
|
||||
#include <deque>
|
||||
#include <algorithm>
|
||||
|
||||
#include "SharedHandle.h"
|
||||
#include "TimeA2.h"
|
||||
#include "BtConstants.h"
|
||||
#include "PeerStat.h"
|
||||
#include "a2functional.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
|
@ -289,6 +291,12 @@ public:
|
|||
size_t countOutstandingUpload() const;
|
||||
};
|
||||
|
||||
template<typename InputIterator>
|
||||
size_t countSeeder(InputIterator first, InputIterator last)
|
||||
{
|
||||
return std::count_if(first, last, mem_fun_sh(&Peer::isSeeder));
|
||||
}
|
||||
|
||||
typedef SharedHandle<Peer> PeerHandle;
|
||||
typedef std::deque<PeerHandle> Peers;
|
||||
|
||||
|
|
|
@ -293,9 +293,7 @@ static void gatherProgressBitTorrent
|
|||
|
||||
std::deque<SharedHandle<Peer> > peers;
|
||||
peerStorage->getActivePeers(peers);
|
||||
entryDict["numSeeders"] =
|
||||
Util::uitos(std::count_if(peers.begin(), peers.end(),
|
||||
mem_fun_sh(&Peer::isSeeder)));
|
||||
entryDict["numSeeders"] = countSeeder(peers.begin(), peers.end());
|
||||
}
|
||||
|
||||
static void gatherPeer(BDE& peers, const SharedHandle<PeerStorage>& ps)
|
||||
|
|
|
@ -10,6 +10,7 @@ class PeerTest:public CppUnit::TestFixture {
|
|||
CPPUNIT_TEST(testAmAllowedIndexSet);
|
||||
CPPUNIT_TEST(testGetId);
|
||||
CPPUNIT_TEST(testOperatorEqual);
|
||||
CPPUNIT_TEST(testCountSeeder);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
private:
|
||||
SharedHandle<Peer> peer;
|
||||
|
@ -23,6 +24,7 @@ public:
|
|||
void testAmAllowedIndexSet();
|
||||
void testGetId();
|
||||
void testOperatorEqual();
|
||||
void testCountSeeder();
|
||||
};
|
||||
|
||||
|
||||
|
@ -57,4 +59,23 @@ void PeerTest::testOperatorEqual()
|
|||
}
|
||||
}
|
||||
|
||||
void PeerTest::testCountSeeder()
|
||||
{
|
||||
std::vector<SharedHandle<Peer> > peers(5);
|
||||
peers[0].reset(new Peer("192.168.0.1", 7000));
|
||||
peers[1].reset(new Peer("192.168.0.2", 7000));
|
||||
peers[2].reset(new Peer("192.168.0.3", 7000));
|
||||
peers[3].reset(new Peer("192.168.0.4", 7000));
|
||||
peers[4].reset(new Peer("192.168.0.5", 7000));
|
||||
for(std::vector<SharedHandle<Peer> >::iterator i = peers.begin();
|
||||
i != peers.end(); ++i) {
|
||||
(*i)->allocateSessionResource(1024, 1024*8);
|
||||
}
|
||||
unsigned char bitfield[] = { 0xff };
|
||||
peers[1]->setBitfield(bitfield, 1);
|
||||
peers[3]->setBitfield(bitfield, 1);
|
||||
peers[4]->setBitfield(bitfield, 1);
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)3, countSeeder(peers.begin(), peers.end()));
|
||||
}
|
||||
|
||||
} // namespace aria2
|
||||
|
|
Loading…
Reference in New Issue