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
This commit is contained in:
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>
Changed method signature:

View File

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

View File

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

View File

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

View File

@ -49,11 +49,12 @@ bool DefaultPeerListProcessor::canHandle(const MetaEntry* peersEntry) const {
return peersList != 0;
}
Peers DefaultPeerListProcessor::extractPeer(const MetaEntry* peersEntry) {
Peers peers;
void DefaultPeerListProcessor::extractPeer
(std::deque<SharedHandle<Peer> >& peers, const MetaEntry* peersEntry)
{
const List* peersList = dynamic_cast<const List*>(peersEntry);
if(!peersList) {
return peers;
return;
}
const std::deque<MetaEntry*>& metaList = peersList->getList();
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()));
peers.push_back(peer);
}
return peers;
}
} // namespace aria2

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -34,7 +34,8 @@ void DefaultPeerListProcessorTest::testExtractPeer() {
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());
SharedHandle<Peer> peer = *peers.begin();
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->ipaddr);
@ -47,7 +48,8 @@ void DefaultPeerListProcessorTest::testExtract2Peers() {
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());
SharedHandle<Peer> peer = *peers.begin();
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->ipaddr);