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

Changed method signature:
	PeerListProcessor::extractPeer
	* src/CompactPeerListProcessor.cc
	* src/CompactPeerListProcessor.h
	* src/DefaultBtAnnounce.cc
	* src/DefaultPeerListProcessor.cc
	* src/DefaultPeerListProcessor.h
	* src/DelegatingPeerListProcessor.cc
	* src/DelegatingPeerListProcessor.h
	* src/PeerListProcessor.h
	* src/UTPexExtensionMessage.cc
	* test/DefaultPeerListProcessorTest.cc
pull/1/head
Tatsuhiro Tsujikawa 2008-05-12 11:05:21 +00:00
parent ddd1206b42
commit 5f8e8e371e
11 changed files with 43 additions and 26 deletions

View File

@ -1,3 +1,18 @@
2008-05-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Changed method signature:
PeerListProcessor::extractPeer
* src/CompactPeerListProcessor.cc
* src/CompactPeerListProcessor.h
* src/DefaultBtAnnounce.cc
* src/DefaultPeerListProcessor.cc
* src/DefaultPeerListProcessor.h
* src/DelegatingPeerListProcessor.cc
* src/DelegatingPeerListProcessor.h
* src/PeerListProcessor.h
* src/UTPexExtensionMessage.cc
* test/DefaultPeerListProcessorTest.cc
2008-05-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com> 2008-05-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Changed method signature: Changed method signature:

View File

@ -46,11 +46,12 @@ bool CompactPeerListProcessor::canHandle(const MetaEntry* peersEntry) const {
return dynamic_cast<const Data*>(peersEntry) != 0; return dynamic_cast<const Data*>(peersEntry) != 0;
} }
Peers CompactPeerListProcessor::extractPeer(const MetaEntry* peersEntry) { void CompactPeerListProcessor::extractPeer
Peers peers; (std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry)
{
const Data* peersData = dynamic_cast<const Data*>(peersEntry); const Data* peersData = dynamic_cast<const Data*>(peersEntry);
if(!peersData) { if(!peersData) {
return peers; return;
} }
if(peersData->getLen()%6 == 0) { if(peersData->getLen()%6 == 0) {
for(size_t i = 0; i < peersData->getLen(); i += 6) { for(size_t i = 0; i < peersData->getLen(); i += 6) {
@ -62,7 +63,6 @@ Peers CompactPeerListProcessor::extractPeer(const MetaEntry* peersEntry) {
peers.push_back(peer); peers.push_back(peer);
} }
} }
return peers;
} }
} // namespace aria2 } // namespace aria2

View File

@ -44,8 +44,8 @@ public:
virtual ~CompactPeerListProcessor(); virtual ~CompactPeerListProcessor();
virtual std::deque<SharedHandle<Peer> > virtual void extractPeer
extractPeer(const MetaEntry* peersEntry); (std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry);
virtual bool canHandle(const MetaEntry* peersEntry) const; virtual bool canHandle(const MetaEntry* peersEntry) const;
}; };

View File

@ -251,7 +251,8 @@ DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse,
!btRuntime->isHalt() && !btRuntime->isHalt() &&
btRuntime->lessThanMinPeer()) { btRuntime->lessThanMinPeer()) {
DelegatingPeerListProcessor proc; DelegatingPeerListProcessor proc;
Peers peers = proc.extractPeer(peersEntry); std::deque<SharedHandle<Peer> > peers;
proc.extractPeer(peers, peersEntry);
peerStorage->addPeer(peers); peerStorage->addPeer(peers);
} }
if(!peersEntry) { if(!peersEntry) {

View File

@ -49,11 +49,12 @@ bool DefaultPeerListProcessor::canHandle(const MetaEntry* peersEntry) const {
return peersList != 0; return peersList != 0;
} }
Peers DefaultPeerListProcessor::extractPeer(const MetaEntry* peersEntry) { void DefaultPeerListProcessor::extractPeer
Peers peers; (std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry)
{
const List* peersList = dynamic_cast<const List*>(peersEntry); const List* peersList = dynamic_cast<const List*>(peersEntry);
if(!peersList) { if(!peersList) {
return peers; return;
} }
const std::deque<MetaEntry*>& metaList = peersList->getList(); const std::deque<MetaEntry*>& metaList = peersList->getList();
for(std::deque<MetaEntry*>::const_iterator itr = metaList.begin(); for(std::deque<MetaEntry*>::const_iterator itr = metaList.begin();
@ -70,7 +71,6 @@ Peers DefaultPeerListProcessor::extractPeer(const MetaEntry* peersEntry) {
PeerHandle peer(new Peer(ip->toString(), port->toInt())); PeerHandle peer(new Peer(ip->toString(), port->toInt()));
peers.push_back(peer); peers.push_back(peer);
} }
return peers;
} }
} // namespace aria2 } // namespace aria2

View File

@ -45,8 +45,8 @@ public:
virtual ~DefaultPeerListProcessor(); virtual ~DefaultPeerListProcessor();
virtual std::deque<SharedHandle<Peer> > virtual void extractPeer
extractPeer(const MetaEntry* peersEntry); (std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry);
virtual bool canHandle(const MetaEntry* peersEntry) const; virtual bool canHandle(const MetaEntry* peersEntry) const;
}; };

View File

@ -53,18 +53,17 @@ DelegatingPeerListProcessor::DelegatingPeerListProcessor()
DelegatingPeerListProcessor::~DelegatingPeerListProcessor() {} DelegatingPeerListProcessor::~DelegatingPeerListProcessor() {}
Peers DelegatingPeerListProcessor::extractPeer(const MetaEntry* peersEntry) { void DelegatingPeerListProcessor::extractPeer
Peers peers; (std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry)
{
for(std::deque<SharedHandle<PeerListProcessor> >::iterator itr = processors.begin(); for(std::deque<SharedHandle<PeerListProcessor> >::iterator itr = processors.begin();
itr != processors.end(); itr++) { itr != processors.end(); itr++) {
PeerListProcessorHandle processor = *itr; PeerListProcessorHandle processor = *itr;
if(processor->canHandle(peersEntry)) { if(processor->canHandle(peersEntry)) {
Peers tempPeers = processor->extractPeer(peersEntry); processor->extractPeer(peers, peersEntry);
std::copy(tempPeers.begin(), tempPeers.end(), std::back_inserter(peers));
break; break;
} }
} }
return peers;
} }
bool DelegatingPeerListProcessor::canHandle(const MetaEntry* peersEntry) const { bool DelegatingPeerListProcessor::canHandle(const MetaEntry* peersEntry) const {

View File

@ -46,8 +46,8 @@ public:
virtual ~DelegatingPeerListProcessor(); virtual ~DelegatingPeerListProcessor();
virtual std::deque<SharedHandle<Peer> > virtual void extractPeer
extractPeer(const MetaEntry* peersEntry); (std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry);
virtual bool canHandle(const MetaEntry* peersEntry) const; virtual bool canHandle(const MetaEntry* peersEntry) const;
}; };

View File

@ -48,8 +48,8 @@ class PeerListProcessor {
public: public:
virtual ~PeerListProcessor() {} virtual ~PeerListProcessor() {}
virtual std::deque<SharedHandle<Peer> > virtual void extractPeer
extractPeer(const MetaEntry* peersEntry) = 0; (std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry) = 0;
virtual bool canHandle(const MetaEntry* peersEntry) const = 0; virtual bool canHandle(const MetaEntry* peersEntry) const = 0;
}; };

View File

@ -139,11 +139,11 @@ UTPexExtensionMessage::create(const BtContextHandle& btContext,
CompactPeerListProcessor proc; CompactPeerListProcessor proc;
const Data* added = dynamic_cast<const Data*>(d->get("added")); const Data* added = dynamic_cast<const Data*>(d->get("added"));
if(added) { if(added) {
msg->_freshPeers = proc.extractPeer(added); proc.extractPeer(msg->_freshPeers, added);
} }
const Data* dropped = dynamic_cast<const Data*>(d->get("dropped")); const Data* dropped = dynamic_cast<const Data*>(d->get("dropped"));
if(dropped) { if(dropped) {
msg->_droppedPeers = proc.extractPeer(dropped); proc.extractPeer(msg->_droppedPeers, dropped);
} }
} }
return msg; return msg;

View File

@ -34,7 +34,8 @@ void DefaultPeerListProcessorTest::testExtractPeer() {
CPPUNIT_ASSERT(proc.canHandle(dic->get("peers"))); CPPUNIT_ASSERT(proc.canHandle(dic->get("peers")));
std::deque<SharedHandle<Peer> > peers = proc.extractPeer(dic->get("peers")); std::deque<SharedHandle<Peer> > peers;
proc.extractPeer(peers, dic->get("peers"));
CPPUNIT_ASSERT_EQUAL((size_t)1, peers.size()); CPPUNIT_ASSERT_EQUAL((size_t)1, peers.size());
SharedHandle<Peer> peer = *peers.begin(); SharedHandle<Peer> peer = *peers.begin();
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->ipaddr); CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->ipaddr);
@ -47,7 +48,8 @@ void DefaultPeerListProcessorTest::testExtract2Peers() {
Dictionary* dic = (Dictionary*)MetaFileUtil::bdecoding(peersString); Dictionary* dic = (Dictionary*)MetaFileUtil::bdecoding(peersString);
std::deque<SharedHandle<Peer> > peers = proc.extractPeer(dic->get("peers")); std::deque<SharedHandle<Peer> > peers;
proc.extractPeer(peers, dic->get("peers"));
CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size()); CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size());
SharedHandle<Peer> peer = *peers.begin(); SharedHandle<Peer> peer = *peers.begin();
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->ipaddr); CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->ipaddr);