mirror of https://github.com/aria2/aria2
2010-06-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Removed PeerListProcessor. Its functionality is now moved to bittorrent_helper.h * src/DefaultBtAnnounce.cc * src/Makefile.am * src/PeerListProcessor.h: Removed * src/UTPexExtensionMessage.cc * src/bittorrent_helper.cc * src/bittorrent_helper.h * test/BittorrentHelperTest.cc * test/Makefile.am * test/PeerListProcessorTest.cc: Removedpull/1/head
parent
ad37c0672c
commit
9e9fb885d9
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
|||
2010-06-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Removed PeerListProcessor. Its functionality is now moved to
|
||||
bittorrent_helper.h
|
||||
* src/DefaultBtAnnounce.cc
|
||||
* src/Makefile.am
|
||||
* src/PeerListProcessor.h: Removed
|
||||
* src/UTPexExtensionMessage.cc
|
||||
* src/bittorrent_helper.cc
|
||||
* src/bittorrent_helper.h
|
||||
* test/BittorrentHelperTest.cc
|
||||
* test/Makefile.am
|
||||
* test/PeerListProcessorTest.cc: Removed
|
||||
|
||||
2010-06-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Included util.h
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#include "DefaultBtAnnounce.h"
|
||||
#include "LogFactory.h"
|
||||
#include "Logger.h"
|
||||
#include "PeerListProcessor.h"
|
||||
#include "util.h"
|
||||
#include "prefs.h"
|
||||
#include "DlAbortEx.h"
|
||||
|
@ -277,7 +276,7 @@ DefaultBtAnnounce::processAnnounceResponse(const unsigned char* trackerResponse,
|
|||
} else {
|
||||
if(!_btRuntime->isHalt() && _btRuntime->lessThanMinPeers()) {
|
||||
std::vector<SharedHandle<Peer> > peers;
|
||||
PeerListProcessor().extractPeer(peerData, std::back_inserter(peers));
|
||||
bittorrent::extractPeer(peerData, std::back_inserter(peers));
|
||||
_peerStorage->addPeer(peers);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -293,7 +293,6 @@ SRCS += PeerAbstractCommand.cc PeerAbstractCommand.h\
|
|||
ShareRatioSeedCriteria.h\
|
||||
UnionSeedCriteria.h\
|
||||
SeedCheckCommand.cc SeedCheckCommand.h\
|
||||
PeerListProcessor.h\
|
||||
AnnounceTier.h\
|
||||
AnnounceList.h AnnounceList.cc\
|
||||
PeerStorage.h\
|
||||
|
|
|
@ -89,7 +89,6 @@ bin_PROGRAMS = aria2c$(EXEEXT)
|
|||
@ENABLE_BITTORRENT_TRUE@ ShareRatioSeedCriteria.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ UnionSeedCriteria.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ SeedCheckCommand.cc SeedCheckCommand.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ PeerListProcessor.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ AnnounceTier.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ AnnounceList.h AnnounceList.cc\
|
||||
@ENABLE_BITTORRENT_TRUE@ PeerStorage.h\
|
||||
|
@ -479,17 +478,16 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
|||
PeerChokeCommand.cc PeerChokeCommand.h SeedCriteria.h \
|
||||
TimeSeedCriteria.h ShareRatioSeedCriteria.h \
|
||||
UnionSeedCriteria.h SeedCheckCommand.cc SeedCheckCommand.h \
|
||||
PeerListProcessor.h AnnounceTier.h AnnounceList.h \
|
||||
AnnounceList.cc PeerStorage.h DefaultPeerStorage.cc \
|
||||
DefaultPeerStorage.h BtAnnounce.cc BtAnnounce.h \
|
||||
DefaultBtAnnounce.cc DefaultBtAnnounce.h BtRuntime.h \
|
||||
BtMessage.h AbstractBtMessage.cc AbstractBtMessage.h \
|
||||
SimpleBtMessage.cc SimpleBtMessage.h BtAllowedFastMessage.cc \
|
||||
BtAllowedFastMessage.h BtBitfieldMessage.cc \
|
||||
BtBitfieldMessage.h BtCancelMessage.cc BtCancelMessage.h \
|
||||
BtChokeMessage.cc BtChokeMessage.h BtHaveAllMessage.cc \
|
||||
BtHaveAllMessage.h BtHaveMessage.cc BtHaveMessage.h \
|
||||
BtHaveNoneMessage.cc BtHaveNoneMessage.h \
|
||||
AnnounceTier.h AnnounceList.h AnnounceList.cc PeerStorage.h \
|
||||
DefaultPeerStorage.cc DefaultPeerStorage.h BtAnnounce.cc \
|
||||
BtAnnounce.h DefaultBtAnnounce.cc DefaultBtAnnounce.h \
|
||||
BtRuntime.h BtMessage.h AbstractBtMessage.cc \
|
||||
AbstractBtMessage.h SimpleBtMessage.cc SimpleBtMessage.h \
|
||||
BtAllowedFastMessage.cc BtAllowedFastMessage.h \
|
||||
BtBitfieldMessage.cc BtBitfieldMessage.h BtCancelMessage.cc \
|
||||
BtCancelMessage.h BtChokeMessage.cc BtChokeMessage.h \
|
||||
BtHaveAllMessage.cc BtHaveAllMessage.h BtHaveMessage.cc \
|
||||
BtHaveMessage.h BtHaveNoneMessage.cc BtHaveNoneMessage.h \
|
||||
BtInterestedMessage.cc BtInterestedMessage.h \
|
||||
BtKeepAliveMessage.cc BtKeepAliveMessage.h \
|
||||
BtNotInterestedMessage.cc BtNotInterestedMessage.h \
|
||||
|
|
|
@ -1,118 +0,0 @@
|
|||
/* <!-- copyright */
|
||||
/*
|
||||
* aria2 - The high speed download utility
|
||||
*
|
||||
* Copyright (C) 2006 Tatsuhiro Tsujikawa
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give
|
||||
* permission to link the code of portions of this program with the
|
||||
* OpenSSL library under certain conditions as described in each
|
||||
* individual source file, and distribute linked combinations
|
||||
* including the two.
|
||||
* You must obey the GNU General Public License in all respects
|
||||
* for all of the code used other than OpenSSL. If you modify
|
||||
* file(s) with this exception, you may extend this exception to your
|
||||
* version of the file(s), but you are not obligated to do so. If you
|
||||
* do not wish to do so, delete this exception statement from your
|
||||
* version. If you delete this exception statement from all source
|
||||
* files in the program, then also delete it here.
|
||||
*/
|
||||
/* copyright --> */
|
||||
#ifndef _D_PEER_LIST_PROCESSOR_H_
|
||||
#define _D_PEER_LIST_PROCESSOR_H_
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include "a2netcompat.h"
|
||||
#include "Peer.h"
|
||||
#include "ValueBase.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
class PeerListProcessor {
|
||||
public:
|
||||
template<typename OutputIterator>
|
||||
void extractPeer(const ValueBase* peerData, OutputIterator dest)
|
||||
{
|
||||
class PeerListValueBaseVisitor:public ValueBaseVisitor {
|
||||
private:
|
||||
OutputIterator dest_;
|
||||
public:
|
||||
PeerListValueBaseVisitor(OutputIterator dest):dest_(dest) {}
|
||||
|
||||
virtual ~PeerListValueBaseVisitor() {}
|
||||
|
||||
virtual void visit(const String& peerData)
|
||||
{
|
||||
size_t length = peerData.s().size();
|
||||
if(length%6 == 0) {
|
||||
const char* base = peerData.s().data();
|
||||
for(size_t i = 0; i < length; i += 6) {
|
||||
struct in_addr in;
|
||||
memcpy(&in.s_addr, base+i, sizeof(uint32_t));
|
||||
std::string ipaddr = inet_ntoa(in);
|
||||
uint16_t port_nworder;
|
||||
memcpy(&port_nworder, base+i+4, sizeof(uint16_t));
|
||||
uint16_t port = ntohs(port_nworder);
|
||||
*dest_ = SharedHandle<Peer>(new Peer(ipaddr, port));
|
||||
++dest_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual void visit(const Integer& v) {}
|
||||
|
||||
virtual void visit(const List& peerData)
|
||||
{
|
||||
for(List::ValueType::const_iterator itr = peerData.begin(),
|
||||
eoi = peerData.end(); itr != eoi; ++itr) {
|
||||
const Dict* peerDict = asDict(*itr);
|
||||
if(!peerDict) {
|
||||
continue;
|
||||
}
|
||||
static const std::string IP = "ip";
|
||||
static const std::string PORT = "port";
|
||||
const String* ip = asString(peerDict->get(IP));
|
||||
const Integer* port = asInteger(peerDict->get(PORT));
|
||||
if(!ip || !port || !(0 < port->i() && port->i() < 65536)) {
|
||||
continue;
|
||||
}
|
||||
*dest_ = SharedHandle<Peer>(new Peer(ip->s(), port->i()));
|
||||
++dest_;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void visit(const Dict& v) {}
|
||||
};
|
||||
if(peerData) {
|
||||
PeerListValueBaseVisitor visitor(dest);
|
||||
peerData->accept(visitor);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename OutputIterator>
|
||||
void extractPeer(const SharedHandle<ValueBase>& peerData, OutputIterator dest)
|
||||
{
|
||||
return extractPeer(peerData.get(), dest);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace aria2
|
||||
|
||||
#endif // _D_PEER_LIST_PROCESSOR_H_
|
|
@ -37,7 +37,6 @@
|
|||
#include "util.h"
|
||||
#include "bittorrent_helper.h"
|
||||
#include "PeerStorage.h"
|
||||
#include "PeerListProcessor.h"
|
||||
#include "DlAbortEx.h"
|
||||
#include "message.h"
|
||||
#include "StringFormat.h"
|
||||
|
@ -161,14 +160,13 @@ UTPexExtensionMessage::create(const unsigned char* data, size_t len)
|
|||
SharedHandle<ValueBase> decoded = bencode2::decode(data+1, len-1);
|
||||
const Dict* dict = asDict(decoded);
|
||||
if(dict) {
|
||||
PeerListProcessor proc;
|
||||
const String* added = asString(dict->get("added"));
|
||||
if(added) {
|
||||
proc.extractPeer(added, std::back_inserter(msg->_freshPeers));
|
||||
bittorrent::extractPeer(added, std::back_inserter(msg->_freshPeers));
|
||||
}
|
||||
const String* dropped = asString(dict->get("dropped"));
|
||||
if(dropped) {
|
||||
proc.extractPeer(dropped, std::back_inserter(msg->_droppedPeers));
|
||||
bittorrent::extractPeer(dropped, std::back_inserter(msg->_droppedPeers));
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
|
|
|
@ -47,13 +47,11 @@
|
|||
#include "BtConstants.h"
|
||||
#include "messageDigest.h"
|
||||
#include "MessageDigestHelper.h"
|
||||
#include "SimpleRandomizer.h"
|
||||
#include "a2netcompat.h"
|
||||
#include "BtConstants.h"
|
||||
#include "bitfield.h"
|
||||
#include "base32.h"
|
||||
#include "magnet.h"
|
||||
#include "ValueBase.h"
|
||||
#include "bencode2.h"
|
||||
#include "TorrentAttribute.h"
|
||||
|
||||
|
|
|
@ -37,14 +37,16 @@
|
|||
|
||||
#include "common.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
|
||||
#include "SharedHandle.h"
|
||||
#include "AnnounceTier.h"
|
||||
#include "util.h"
|
||||
#include "TorrentAttribute.h"
|
||||
#include "a2netcompat.h"
|
||||
#include "Peer.h"
|
||||
#include "ValueBase.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
|
@ -213,6 +215,71 @@ std::string metadata2Torrent
|
|||
// Constructs BitTorrent Magnet URI using attrs.
|
||||
std::string torrent2Magnet(const SharedHandle<TorrentAttribute>& attrs);
|
||||
|
||||
template<typename OutputIterator>
|
||||
void extractPeer(const ValueBase* peerData, OutputIterator dest)
|
||||
{
|
||||
class PeerListValueBaseVisitor:public ValueBaseVisitor {
|
||||
private:
|
||||
OutputIterator dest_;
|
||||
public:
|
||||
PeerListValueBaseVisitor(OutputIterator dest):dest_(dest) {}
|
||||
|
||||
virtual ~PeerListValueBaseVisitor() {}
|
||||
|
||||
virtual void visit(const String& peerData)
|
||||
{
|
||||
size_t length = peerData.s().size();
|
||||
if(length%6 == 0) {
|
||||
const char* base = peerData.s().data();
|
||||
for(size_t i = 0; i < length; i += 6) {
|
||||
struct in_addr in;
|
||||
memcpy(&in.s_addr, base+i, sizeof(uint32_t));
|
||||
std::string ipaddr = inet_ntoa(in);
|
||||
uint16_t port_nworder;
|
||||
memcpy(&port_nworder, base+i+4, sizeof(uint16_t));
|
||||
uint16_t port = ntohs(port_nworder);
|
||||
*dest_ = SharedHandle<Peer>(new Peer(ipaddr, port));
|
||||
++dest_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual void visit(const Integer& v) {}
|
||||
|
||||
virtual void visit(const List& peerData)
|
||||
{
|
||||
for(List::ValueType::const_iterator itr = peerData.begin(),
|
||||
eoi = peerData.end(); itr != eoi; ++itr) {
|
||||
const Dict* peerDict = asDict(*itr);
|
||||
if(!peerDict) {
|
||||
continue;
|
||||
}
|
||||
static const std::string IP = "ip";
|
||||
static const std::string PORT = "port";
|
||||
const String* ip = asString(peerDict->get(IP));
|
||||
const Integer* port = asInteger(peerDict->get(PORT));
|
||||
if(!ip || !port || !(0 < port->i() && port->i() < 65536)) {
|
||||
continue;
|
||||
}
|
||||
*dest_ = SharedHandle<Peer>(new Peer(ip->s(), port->i()));
|
||||
++dest_;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void visit(const Dict& v) {}
|
||||
};
|
||||
if(peerData) {
|
||||
PeerListValueBaseVisitor visitor(dest);
|
||||
peerData->accept(visitor);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename OutputIterator>
|
||||
void extractPeer(const SharedHandle<ValueBase>& peerData, OutputIterator dest)
|
||||
{
|
||||
return extractPeer(peerData.get(), dest);
|
||||
}
|
||||
|
||||
} // namespace bittorrent
|
||||
|
||||
} // namespace aria2
|
||||
|
|
|
@ -63,6 +63,8 @@ class BittorrentHelperTest:public CppUnit::TestFixture {
|
|||
CPPUNIT_TEST(testParseMagnet_base32);
|
||||
CPPUNIT_TEST(testMetadata2Torrent);
|
||||
CPPUNIT_TEST(testTorrent2Magnet);
|
||||
CPPUNIT_TEST(testExtractPeerFromList);
|
||||
CPPUNIT_TEST(testExtract2PeersFromList);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
public:
|
||||
void setUp() {
|
||||
|
@ -106,6 +108,8 @@ public:
|
|||
void testParseMagnet_base32();
|
||||
void testMetadata2Torrent();
|
||||
void testTorrent2Magnet();
|
||||
void testExtractPeerFromList();
|
||||
void testExtract2PeersFromList();
|
||||
};
|
||||
|
||||
|
||||
|
@ -756,6 +760,43 @@ void BittorrentHelperTest::testTorrent2Magnet()
|
|||
torrent2Magnet(getTorrentAttrs(dctx)));
|
||||
}
|
||||
|
||||
void BittorrentHelperTest::testExtractPeerFromList()
|
||||
{
|
||||
std::string peersString =
|
||||
"d5:peersld2:ip11:192.168.0.17:peer id20:aria2-00000000000000"
|
||||
"4:porti2006eeee";
|
||||
|
||||
SharedHandle<ValueBase> dict = bencode2::decode(peersString);
|
||||
|
||||
std::deque<SharedHandle<Peer> > peers;
|
||||
extractPeer(asDict(dict)->get("peers"), std::back_inserter(peers));
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, peers.size());
|
||||
SharedHandle<Peer> peer = *peers.begin();
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress());
|
||||
CPPUNIT_ASSERT_EQUAL((uint16_t)2006, peer->getPort());
|
||||
}
|
||||
|
||||
void BittorrentHelperTest::testExtract2PeersFromList()
|
||||
{
|
||||
std::string peersString =
|
||||
"d5:peersld2:ip11:192.168.0.17:peer id20:aria2-00000000000000"
|
||||
"4:porti65535eed2:ip11:192.168.0.27:peer id20:aria2-00000000000000"
|
||||
"4:porti2007eeee";
|
||||
|
||||
SharedHandle<ValueBase> dict = bencode2::decode(peersString);
|
||||
|
||||
std::deque<SharedHandle<Peer> > peers;
|
||||
extractPeer(asDict(dict)->get("peers"), std::back_inserter(peers));
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size());
|
||||
SharedHandle<Peer> peer = *peers.begin();
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress());
|
||||
CPPUNIT_ASSERT_EQUAL((uint16_t)65535, peer->getPort());
|
||||
|
||||
peer = *(peers.begin()+1);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.2"), peer->getIPAddress());
|
||||
CPPUNIT_ASSERT_EQUAL((uint16_t)2007, peer->getPort());
|
||||
}
|
||||
|
||||
} // namespace bittorrent
|
||||
|
||||
} // namespace aria2
|
||||
|
|
|
@ -124,7 +124,6 @@ aria2c_SOURCES += BtAllowedFastMessageTest.cc\
|
|||
MockBtMessage.h\
|
||||
MockBtMessageDispatcher.h\
|
||||
MockBtMessageFactory.h\
|
||||
PeerListProcessorTest.cc\
|
||||
AnnounceListTest.cc\
|
||||
DefaultPeerStorageTest.cc\
|
||||
MockPeerStorage.h\
|
||||
|
|
|
@ -73,7 +73,6 @@ check_PROGRAMS = $(am__EXEEXT_1)
|
|||
@ENABLE_BITTORRENT_TRUE@ MockBtMessage.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ MockBtMessageDispatcher.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ MockBtMessageFactory.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ PeerListProcessorTest.cc\
|
||||
@ENABLE_BITTORRENT_TRUE@ AnnounceListTest.cc\
|
||||
@ENABLE_BITTORRENT_TRUE@ DefaultPeerStorageTest.cc\
|
||||
@ENABLE_BITTORRENT_TRUE@ MockPeerStorage.h\
|
||||
|
@ -233,9 +232,8 @@ am__aria2c_SOURCES_DIST = AllTest.cc TestUtil.cc TestUtil.h \
|
|||
DefaultBtMessageDispatcherTest.cc \
|
||||
DefaultBtRequestFactoryTest.cc MockBtMessage.h \
|
||||
MockBtMessageDispatcher.h MockBtMessageFactory.h \
|
||||
PeerListProcessorTest.cc AnnounceListTest.cc \
|
||||
DefaultPeerStorageTest.cc MockPeerStorage.h \
|
||||
ByteArrayDiskWriterTest.cc PeerTest.cc \
|
||||
AnnounceListTest.cc DefaultPeerStorageTest.cc \
|
||||
MockPeerStorage.h ByteArrayDiskWriterTest.cc PeerTest.cc \
|
||||
PeerSessionResourceTest.cc ShareRatioSeedCriteriaTest.cc \
|
||||
BtRegistryTest.cc BtDependencyTest.cc \
|
||||
BtPostDownloadHandlerTest.cc TimeSeedCriteriaTest.cc \
|
||||
|
@ -308,7 +306,6 @@ am__aria2c_SOURCES_DIST = AllTest.cc TestUtil.cc TestUtil.h \
|
|||
@ENABLE_BITTORRENT_TRUE@ DefaultBtAnnounceTest.$(OBJEXT) \
|
||||
@ENABLE_BITTORRENT_TRUE@ DefaultBtMessageDispatcherTest.$(OBJEXT) \
|
||||
@ENABLE_BITTORRENT_TRUE@ DefaultBtRequestFactoryTest.$(OBJEXT) \
|
||||
@ENABLE_BITTORRENT_TRUE@ PeerListProcessorTest.$(OBJEXT) \
|
||||
@ENABLE_BITTORRENT_TRUE@ AnnounceListTest.$(OBJEXT) \
|
||||
@ENABLE_BITTORRENT_TRUE@ DefaultPeerStorageTest.$(OBJEXT) \
|
||||
@ENABLE_BITTORRENT_TRUE@ ByteArrayDiskWriterTest.$(OBJEXT) \
|
||||
|
@ -858,7 +855,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PStringBuildVisitorTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ParameterizedStringParserTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerListProcessorTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerSessionResourceTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PeerTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PieceStatManTest.Po@am__quote@
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
#include "PeerListProcessor.h"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
|
||||
#include "Exception.h"
|
||||
#include "Peer.h"
|
||||
#include "TimeA2.h"
|
||||
#include "bencode2.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
class PeerListProcessorTest:public CppUnit::TestFixture {
|
||||
|
||||
CPPUNIT_TEST_SUITE(PeerListProcessorTest);
|
||||
CPPUNIT_TEST(testExtractPeerFromList);
|
||||
CPPUNIT_TEST(testExtract2PeersFromList);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
private:
|
||||
|
||||
public:
|
||||
void setUp() {
|
||||
}
|
||||
|
||||
void testExtractPeerFromList();
|
||||
void testExtract2PeersFromList();
|
||||
};
|
||||
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION( PeerListProcessorTest );
|
||||
|
||||
void PeerListProcessorTest::testExtractPeerFromList() {
|
||||
PeerListProcessor proc;
|
||||
std::string peersString =
|
||||
"d5:peersld2:ip11:192.168.0.17:peer id20:aria2-00000000000000"
|
||||
"4:porti2006eeee";
|
||||
|
||||
SharedHandle<ValueBase> dict = bencode2::decode(peersString);
|
||||
|
||||
std::deque<SharedHandle<Peer> > peers;
|
||||
proc.extractPeer(asDict(dict)->get("peers"), std::back_inserter(peers));
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)1, peers.size());
|
||||
SharedHandle<Peer> peer = *peers.begin();
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress());
|
||||
CPPUNIT_ASSERT_EQUAL((uint16_t)2006, peer->getPort());
|
||||
}
|
||||
|
||||
void PeerListProcessorTest::testExtract2PeersFromList() {
|
||||
PeerListProcessor proc;
|
||||
std::string peersString =
|
||||
"d5:peersld2:ip11:192.168.0.17:peer id20:aria2-00000000000000"
|
||||
"4:porti65535eed2:ip11:192.168.0.27:peer id20:aria2-00000000000000"
|
||||
"4:porti2007eeee";
|
||||
|
||||
SharedHandle<ValueBase> dict = bencode2::decode(peersString);
|
||||
|
||||
std::deque<SharedHandle<Peer> > peers;
|
||||
proc.extractPeer(asDict(dict)->get("peers"), std::back_inserter(peers));
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size());
|
||||
SharedHandle<Peer> peer = *peers.begin();
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer->getIPAddress());
|
||||
CPPUNIT_ASSERT_EQUAL((uint16_t)65535, peer->getPort());
|
||||
|
||||
peer = *(peers.begin()+1);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.2"), peer->getIPAddress());
|
||||
CPPUNIT_ASSERT_EQUAL((uint16_t)2007, peer->getPort());
|
||||
}
|
||||
|
||||
} // namespace aria2
|
Loading…
Reference in New Issue