mirror of https://github.com/aria2/aria2
Use std::unique_ptr instead of std::shared_ptr
parent
c330ac901d
commit
50dcd6394c
|
@ -227,7 +227,7 @@ void AnnounceList::shuffle() {
|
|||
tiers_.begin(), eoi = tiers_.end(); itr != eoi; ++itr) {
|
||||
std::deque<std::string>& urls = (*itr)->urls;
|
||||
std::random_shuffle(urls.begin(), urls.end(),
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ void BtLeecherStateChoke::plannedOptimisticUnchoke
|
|||
PeerFilter(true, true));
|
||||
if(i != peerEntries.begin()) {
|
||||
std::random_shuffle(peerEntries.begin(), i,
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
(*peerEntries.begin()).enableOptUnchoking();
|
||||
A2_LOG_INFO(fmt("POU: %s",
|
||||
(*peerEntries.begin()).getPeer()->getIPAddress().c_str()));
|
||||
|
@ -183,7 +183,7 @@ void BtLeecherStateChoke::regularUnchoke(std::vector<PeerEntry>& peerEntries)
|
|||
}
|
||||
if(fastOptUnchoker) {
|
||||
std::random_shuffle(peerIter, peerEntries.end(),
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
for(std::vector<PeerEntry>::iterator i = peerIter,
|
||||
eoi = peerEntries.end(); i != eoi; ++i) {
|
||||
if((*i).getPeer()->peerInterested()) {
|
||||
|
|
|
@ -138,7 +138,7 @@ void BtSeederStateChoke::unchoke
|
|||
std::mem_fun_ref(&PeerEntry::disableOptUnchoking));
|
||||
if(r != peers.end()) {
|
||||
std::random_shuffle(r, peers.end(),
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
(*r).getPeer()->optUnchoking(true);
|
||||
A2_LOG_INFO(fmt("POU: %s", (*r).getPeer()->getIPAddress().c_str()));
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ bool DHTConnectionImpl::bind
|
|||
ports.push_back(sgl.next());
|
||||
}
|
||||
std::random_shuffle(ports.begin(), ports.end(),
|
||||
*SimpleRandomizer::getInstance().get());
|
||||
*SimpleRandomizer::getInstance());
|
||||
for(std::vector<uint16_t>::const_iterator i = ports.begin(),
|
||||
eoi = ports.end(); i != eoi; ++i) {
|
||||
port = *i;
|
||||
|
|
|
@ -384,8 +384,7 @@ void DefaultBtAnnounce::shuffleAnnounce() {
|
|||
announceList_.shuffle();
|
||||
}
|
||||
|
||||
void DefaultBtAnnounce::setRandomizer
|
||||
(const std::shared_ptr<Randomizer>& randomizer)
|
||||
void DefaultBtAnnounce::setRandomizer(Randomizer* randomizer)
|
||||
{
|
||||
randomizer_ = randomizer;
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ private:
|
|||
AnnounceList announceList_;
|
||||
std::string trackerId_;
|
||||
const Option* option_;
|
||||
std::shared_ptr<Randomizer> randomizer_;
|
||||
Randomizer* randomizer_;
|
||||
std::shared_ptr<BtRuntime> btRuntime_;
|
||||
std::shared_ptr<PieceStorage> pieceStorage_;
|
||||
std::shared_ptr<PeerStorage> peerStorage_;
|
||||
|
@ -136,7 +136,7 @@ public:
|
|||
tcpPort_ = port;
|
||||
}
|
||||
|
||||
void setRandomizer(const std::shared_ptr<Randomizer>& randomizer);
|
||||
void setRandomizer(Randomizer* randomizer);
|
||||
|
||||
time_t getInterval() const
|
||||
{
|
||||
|
|
|
@ -209,7 +209,7 @@ void DefaultBtRequestFactory::createRequestMessagesOnEndGame
|
|||
}
|
||||
}
|
||||
std::random_shuffle(missingBlockIndexes.begin(), missingBlockIndexes.end(),
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
for(std::vector<size_t>::const_iterator bitr = missingBlockIndexes.begin(),
|
||||
eoi2 = missingBlockIndexes.end();
|
||||
bitr != eoi2 && requests.size() < max; ++bitr) {
|
||||
|
|
|
@ -152,7 +152,7 @@ public:
|
|||
|
||||
void MetalinkEntry::reorderResourcesByPriority() {
|
||||
std::random_shuffle(resources.begin(), resources.end(),
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
std::sort(resources.begin(), resources.end(),
|
||||
PriorityHigher<MetalinkResource>());
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ class MultiFileAllocationIterator:public FileAllocationIterator
|
|||
private:
|
||||
MultiDiskAdaptor* diskAdaptor_;
|
||||
std::deque<std::shared_ptr<DiskWriterEntry> > entries_;
|
||||
std::shared_ptr<FileAllocationIterator> fileAllocationIterator_;
|
||||
std::unique_ptr<FileAllocationIterator> fileAllocationIterator_;
|
||||
public:
|
||||
MultiFileAllocationIterator(MultiDiskAdaptor* diskAdaptor);
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ bool PeerListenCommand::bindPort(uint16_t& port, SegList<int>& sgl)
|
|||
ports.push_back(sgl.next());
|
||||
}
|
||||
std::random_shuffle(ports.begin(), ports.end(),
|
||||
*SimpleRandomizer::getInstance().get());
|
||||
*SimpleRandomizer::getInstance());
|
||||
const int ipv = (family_ == AF_INET) ? 4 : 6;
|
||||
for(std::vector<uint16_t>::const_iterator i = ports.begin(),
|
||||
eoi = ports.end(); i != eoi; ++i) {
|
||||
|
|
|
@ -52,7 +52,7 @@ PieceStatMan::PieceStatMan(size_t pieceNum, bool randomShuffle):
|
|||
// we need some randomness in ordering.
|
||||
if(randomShuffle) {
|
||||
std::random_shuffle(order_.begin(), order_.end(),
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -617,7 +617,7 @@ void RequestGroup::initPieceStorage()
|
|||
downloadContext_->getPieceLength());
|
||||
if(!result.empty()) {
|
||||
std::random_shuffle(result.begin(), result.end(),
|
||||
*(SimpleRandomizer::getInstance().get()));
|
||||
*SimpleRandomizer::getInstance());
|
||||
std::shared_ptr<PriorityPieceSelector> priSelector
|
||||
(new PriorityPieceSelector(ps->getPieceSelector()));
|
||||
priSelector->setPriorityPiece(result.begin(), result.end());
|
||||
|
|
|
@ -43,14 +43,14 @@
|
|||
|
||||
namespace aria2 {
|
||||
|
||||
std::shared_ptr<SimpleRandomizer> SimpleRandomizer::randomizer_;
|
||||
std::unique_ptr<SimpleRandomizer> SimpleRandomizer::randomizer_;
|
||||
|
||||
const std::shared_ptr<SimpleRandomizer>& SimpleRandomizer::getInstance()
|
||||
SimpleRandomizer* SimpleRandomizer::getInstance()
|
||||
{
|
||||
if(!randomizer_) {
|
||||
randomizer_.reset(new SimpleRandomizer());
|
||||
}
|
||||
return randomizer_;
|
||||
return randomizer_.get();
|
||||
}
|
||||
|
||||
void SimpleRandomizer::init()
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace aria2 {
|
|||
|
||||
class SimpleRandomizer : public Randomizer {
|
||||
private:
|
||||
static std::shared_ptr<SimpleRandomizer> randomizer_;
|
||||
static std::unique_ptr<SimpleRandomizer> randomizer_;
|
||||
|
||||
#ifdef __MINGW32__
|
||||
HCRYPTPROV cryProvider_;
|
||||
|
@ -56,7 +56,7 @@ private:
|
|||
SimpleRandomizer();
|
||||
public:
|
||||
|
||||
static const std::shared_ptr<SimpleRandomizer>& getInstance();
|
||||
static SimpleRandomizer* getInstance();
|
||||
|
||||
static void init();
|
||||
|
||||
|
|
|
@ -330,6 +330,12 @@ struct RefLess {
|
|||
}
|
||||
};
|
||||
|
||||
template<typename T, typename... U>
|
||||
std::unique_ptr<T> make_unique(U&&... u)
|
||||
{
|
||||
return std::unique_ptr<T>(new T(std::forward<U>(u)...));
|
||||
}
|
||||
|
||||
} // namespace aria2
|
||||
|
||||
#endif // D_A2_FUNCTIONAL_H
|
||||
|
|
|
@ -1506,7 +1506,7 @@ std::vector<std::pair<size_t, std::string> > createIndexPaths(std::istream& i)
|
|||
namespace {
|
||||
void generateRandomDataRandom(unsigned char* data, size_t length)
|
||||
{
|
||||
const std::shared_ptr<SimpleRandomizer>& rd = SimpleRandomizer::getInstance();
|
||||
SimpleRandomizer* rd = SimpleRandomizer::getInstance();
|
||||
for(size_t i = 0; i < length; ++i) {
|
||||
data[i] = static_cast<unsigned long>(rd->getRandomNumber(256));
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ private:
|
|||
std::shared_ptr<MockPieceStorage> pieceStorage_;
|
||||
std::shared_ptr<MockPeerStorage> peerStorage_;
|
||||
std::shared_ptr<BtRuntime> btRuntime_;
|
||||
std::unique_ptr<Randomizer> randomizer_;
|
||||
Option* option_;
|
||||
public:
|
||||
void setUp() {
|
||||
|
@ -73,6 +74,8 @@ public:
|
|||
|
||||
peerStorage_.reset(new MockPeerStorage());
|
||||
btRuntime_.reset(new BtRuntime());
|
||||
|
||||
randomizer_.reset(new FixedNumberRandomizer());
|
||||
}
|
||||
|
||||
void tearDown()
|
||||
|
@ -150,7 +153,7 @@ void DefaultBtAnnounceTest::testNoMoreAnnounce()
|
|||
btAnnounce.setPieceStorage(pieceStorage_);
|
||||
btAnnounce.setPeerStorage(peerStorage_);
|
||||
btAnnounce.setBtRuntime(btRuntime_);
|
||||
btAnnounce.setRandomizer(std::shared_ptr<Randomizer>(new FixedNumberRandomizer()));
|
||||
btAnnounce.setRandomizer(randomizer_.get());
|
||||
btAnnounce.setTcpPort(6989);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://localhost/announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=fastdltl&numwant=50&no_peer_id=1&port=6989&event=started&supportcrypto=1"), btAnnounce.getAnnounceUrl());
|
||||
|
@ -199,7 +202,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl()
|
|||
btAnnounce.setPieceStorage(pieceStorage_);
|
||||
btAnnounce.setPeerStorage(peerStorage_);
|
||||
btAnnounce.setBtRuntime(btRuntime_);
|
||||
btAnnounce.setRandomizer(std::shared_ptr<Randomizer>(new FixedNumberRandomizer()));
|
||||
btAnnounce.setRandomizer(randomizer_.get());
|
||||
btAnnounce.setTcpPort(6989);
|
||||
std::shared_ptr<UDPTrackerRequest> req;
|
||||
|
||||
|
@ -256,7 +259,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl_withQuery()
|
|||
btAnnounce.setPieceStorage(pieceStorage_);
|
||||
btAnnounce.setPeerStorage(peerStorage_);
|
||||
btAnnounce.setBtRuntime(btRuntime_);
|
||||
btAnnounce.setRandomizer(std::shared_ptr<Randomizer>(new FixedNumberRandomizer()));
|
||||
btAnnounce.setRandomizer(randomizer_.get());
|
||||
btAnnounce.setTcpPort(6989);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL
|
||||
|
@ -280,7 +283,7 @@ void DefaultBtAnnounceTest::testGetAnnounceUrl_externalIP()
|
|||
btAnnounce.setPieceStorage(pieceStorage_);
|
||||
btAnnounce.setPeerStorage(peerStorage_);
|
||||
btAnnounce.setBtRuntime(btRuntime_);
|
||||
btAnnounce.setRandomizer(std::shared_ptr<Randomizer>(new FixedNumberRandomizer()));
|
||||
btAnnounce.setRandomizer(randomizer_.get());
|
||||
btAnnounce.setTcpPort(6989);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL
|
||||
|
@ -311,7 +314,7 @@ void DefaultBtAnnounceTest::testIsAllAnnounceFailed()
|
|||
btAnnounce.setPieceStorage(pieceStorage_);
|
||||
btAnnounce.setPeerStorage(peerStorage_);
|
||||
btAnnounce.setBtRuntime(btRuntime_);
|
||||
btAnnounce.setRandomizer(std::shared_ptr<Randomizer>(new FixedNumberRandomizer()));
|
||||
btAnnounce.setRandomizer(randomizer_.get());
|
||||
btAnnounce.setTcpPort(6989);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://localhost/announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=fastdltl&numwant=50&no_peer_id=1&port=6989&event=started&supportcrypto=1"), btAnnounce.getAnnounceUrl());
|
||||
|
@ -344,7 +347,7 @@ void DefaultBtAnnounceTest::testURLOrderInStoppedEvent()
|
|||
btAnnounce.setPieceStorage(pieceStorage_);
|
||||
btAnnounce.setPeerStorage(peerStorage_);
|
||||
btAnnounce.setBtRuntime(btRuntime_);
|
||||
btAnnounce.setRandomizer(std::shared_ptr<Randomizer>(new FixedNumberRandomizer()));
|
||||
btAnnounce.setRandomizer(randomizer_.get());
|
||||
btAnnounce.setTcpPort(6989);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://localhost1/announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=fastdltl&numwant=50&no_peer_id=1&port=6989&event=started&supportcrypto=1"), btAnnounce.getAnnounceUrl());
|
||||
|
@ -375,7 +378,7 @@ void DefaultBtAnnounceTest::testURLOrderInCompletedEvent()
|
|||
btAnnounce.setPieceStorage(pieceStorage_);
|
||||
btAnnounce.setPeerStorage(peerStorage_);
|
||||
btAnnounce.setBtRuntime(btRuntime_);
|
||||
btAnnounce.setRandomizer(std::shared_ptr<Randomizer>(new FixedNumberRandomizer()));
|
||||
btAnnounce.setRandomizer(randomizer_.get());
|
||||
btAnnounce.setTcpPort(6989);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("http://localhost1/announce?info_hash=%01%23Eg%89%AB%CD%EF%01%23Eg%89%AB%CD%EF%01%23Eg&peer_id=%2Daria2%2Dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=fastdltl&numwant=50&no_peer_id=1&port=6989&event=started&supportcrypto=1"), btAnnounce.getAnnounceUrl());
|
||||
|
|
Loading…
Reference in New Issue