diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/AnnounceList.cc | 2 | ||||
| -rw-r--r-- | src/BtLeecherStateChoke.cc | 4 | ||||
| -rw-r--r-- | src/BtSeederStateChoke.cc | 2 | ||||
| -rw-r--r-- | src/DHTConnectionImpl.cc | 2 | ||||
| -rw-r--r-- | src/DefaultBtAnnounce.cc | 3 | ||||
| -rw-r--r-- | src/DefaultBtAnnounce.h | 4 | ||||
| -rw-r--r-- | src/DefaultBtRequestFactory.cc | 2 | ||||
| -rw-r--r-- | src/MetalinkEntry.cc | 2 | ||||
| -rw-r--r-- | src/MultiFileAllocationIterator.h | 2 | ||||
| -rw-r--r-- | src/PeerListenCommand.cc | 2 | ||||
| -rw-r--r-- | src/PieceStatMan.cc | 2 | ||||
| -rw-r--r-- | src/RequestGroup.cc | 2 | ||||
| -rw-r--r-- | src/SimpleRandomizer.cc | 6 | ||||
| -rw-r--r-- | src/SimpleRandomizer.h | 4 | ||||
| -rw-r--r-- | src/a2functional.h | 6 | ||||
| -rw-r--r-- | src/util.cc | 2 |
16 files changed, 26 insertions, 21 deletions
diff --git a/src/AnnounceList.cc b/src/AnnounceList.cc index f21634aa..4c1e1b32 100644 --- a/src/AnnounceList.cc +++ b/src/AnnounceList.cc @@ -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()); } } diff --git a/src/BtLeecherStateChoke.cc b/src/BtLeecherStateChoke.cc index 7707ea55..52a9139f 100644 --- a/src/BtLeecherStateChoke.cc +++ b/src/BtLeecherStateChoke.cc @@ -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()) { diff --git a/src/BtSeederStateChoke.cc b/src/BtSeederStateChoke.cc index 7b1439f8..54c936f3 100644 --- a/src/BtSeederStateChoke.cc +++ b/src/BtSeederStateChoke.cc @@ -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())); } diff --git a/src/DHTConnectionImpl.cc b/src/DHTConnectionImpl.cc index 8129b6bc..6ff05140 100644 --- a/src/DHTConnectionImpl.cc +++ b/src/DHTConnectionImpl.cc @@ -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; diff --git a/src/DefaultBtAnnounce.cc b/src/DefaultBtAnnounce.cc index f371def2..cafbd6d8 100644 --- a/src/DefaultBtAnnounce.cc +++ b/src/DefaultBtAnnounce.cc @@ -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; } diff --git a/src/DefaultBtAnnounce.h b/src/DefaultBtAnnounce.h index 7c2f9eb8..5284a1e8 100644 --- a/src/DefaultBtAnnounce.h +++ b/src/DefaultBtAnnounce.h @@ -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 { diff --git a/src/DefaultBtRequestFactory.cc b/src/DefaultBtRequestFactory.cc index 449afba7..337c740d 100644 --- a/src/DefaultBtRequestFactory.cc +++ b/src/DefaultBtRequestFactory.cc @@ -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) { diff --git a/src/MetalinkEntry.cc b/src/MetalinkEntry.cc index e41b5d44..2ebcb144 100644 --- a/src/MetalinkEntry.cc +++ b/src/MetalinkEntry.cc @@ -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>()); } diff --git a/src/MultiFileAllocationIterator.h b/src/MultiFileAllocationIterator.h index 8780c8d1..388b891f 100644 --- a/src/MultiFileAllocationIterator.h +++ b/src/MultiFileAllocationIterator.h @@ -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); diff --git a/src/PeerListenCommand.cc b/src/PeerListenCommand.cc index c70a8590..365e4c96 100644 --- a/src/PeerListenCommand.cc +++ b/src/PeerListenCommand.cc @@ -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) { diff --git a/src/PieceStatMan.cc b/src/PieceStatMan.cc index e869cffd..de467482 100644 --- a/src/PieceStatMan.cc +++ b/src/PieceStatMan.cc @@ -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()); } } diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index d62c8431..66bc2898 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -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()); diff --git a/src/SimpleRandomizer.cc b/src/SimpleRandomizer.cc index 72ead48b..dc558e3d 100644 --- a/src/SimpleRandomizer.cc +++ b/src/SimpleRandomizer.cc @@ -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() diff --git a/src/SimpleRandomizer.h b/src/SimpleRandomizer.h index 63309fb0..457bdcb1 100644 --- a/src/SimpleRandomizer.h +++ b/src/SimpleRandomizer.h @@ -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(); diff --git a/src/a2functional.h b/src/a2functional.h index a1cd9749..871db2de 100644 --- a/src/a2functional.h +++ b/src/a2functional.h @@ -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 diff --git a/src/util.cc b/src/util.cc index 3eac6c38..ae348fef 100644 --- a/src/util.cc +++ b/src/util.cc @@ -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)); } |
