Use std::shuffle, instead of std::random_shuffle

pull/454/head
Tatsuhiro Tsujikawa 2015-06-11 22:40:56 +09:00
parent 8448b5062f
commit 37c2edd97a
12 changed files with 22 additions and 26 deletions

View File

@ -222,8 +222,8 @@ void AnnounceList::moveToCompletedAllowedTier() {
void AnnounceList::shuffle() { void AnnounceList::shuffle() {
for (const auto& tier: tiers_) { for (const auto& tier: tiers_) {
auto& urls = tier->urls; auto& urls = tier->urls;
std::random_shuffle(std::begin(urls), std::end(urls), std::shuffle(std::begin(urls), std::end(urls),
*SimpleRandomizer::getInstance()); *SimpleRandomizer::getInstance());
} }
} }

View File

@ -120,8 +120,8 @@ bool BtDependency::resolve()
context->getFileEntries(); context->getFileEntries();
for (auto &fe : fileEntries) { for (auto &fe : fileEntries) {
auto &uri = fe->getRemainingUris(); auto &uri = fe->getRemainingUris();
std::random_shuffle(std::begin(uri), std::end(uri), std::shuffle(std::begin(uri), std::end(uri),
*SimpleRandomizer::getInstance()); *SimpleRandomizer::getInstance());
} }
const std::vector<std::shared_ptr<FileEntry> >& dependantFileEntries = const std::vector<std::shared_ptr<FileEntry> >& dependantFileEntries =
dependant_->getDownloadContext()->getFileEntries(); dependant_->getDownloadContext()->getFileEntries();

View File

@ -152,8 +152,7 @@ void BtLeecherStateChoke::plannedOptimisticUnchoke
auto i = std::partition(peerEntries.begin(), peerEntries.end(), auto i = std::partition(peerEntries.begin(), peerEntries.end(),
PeerFilter(true, true)); PeerFilter(true, true));
if(i != peerEntries.begin()) { if(i != peerEntries.begin()) {
std::random_shuffle(peerEntries.begin(), i, std::shuffle(peerEntries.begin(), i, *SimpleRandomizer::getInstance());
*SimpleRandomizer::getInstance());
(*peerEntries.begin()).enableOptUnchoking(); (*peerEntries.begin()).enableOptUnchoking();
A2_LOG_INFO(fmt("POU: %s", A2_LOG_INFO(fmt("POU: %s",
(*peerEntries.begin()).getPeer()->getIPAddress().c_str())); (*peerEntries.begin()).getPeer()->getIPAddress().c_str()));
@ -183,8 +182,7 @@ void BtLeecherStateChoke::regularUnchoke(std::vector<PeerEntry>& peerEntries)
} }
} }
if(fastOptUnchoker) { if(fastOptUnchoker) {
std::random_shuffle(peerIter, peerEntries.end(), std::shuffle(peerIter, peerEntries.end(), *SimpleRandomizer::getInstance());
*SimpleRandomizer::getInstance());
for (auto& p : peerEntries) { for (auto& p : peerEntries) {
if(p.getPeer()->peerInterested()) { if(p.getPeer()->peerInterested()) {
p.enableOptUnchoking(); p.enableOptUnchoking();

View File

@ -141,8 +141,7 @@ void BtSeederStateChoke::unchoke
std::for_each(peers.begin(), peers.end(), std::for_each(peers.begin(), peers.end(),
std::mem_fn(&PeerEntry::disableOptUnchoking)); std::mem_fn(&PeerEntry::disableOptUnchoking));
if(r != peers.end()) { if(r != peers.end()) {
std::random_shuffle(r, peers.end(), std::shuffle(r, peers.end(), *SimpleRandomizer::getInstance());
*SimpleRandomizer::getInstance());
(*r).getPeer()->optUnchoking(true); (*r).getPeer()->optUnchoking(true);
A2_LOG_INFO(fmt("POU: %s", (*r).getPeer()->getIPAddress().c_str())); A2_LOG_INFO(fmt("POU: %s", (*r).getPeer()->getIPAddress().c_str()));
} }

View File

@ -61,8 +61,7 @@ bool DHTConnectionImpl::bind
while(sgl.hasNext()) { while(sgl.hasNext()) {
ports.push_back(sgl.next()); ports.push_back(sgl.next());
} }
std::random_shuffle(ports.begin(), ports.end(), std::shuffle(ports.begin(), ports.end(), *SimpleRandomizer::getInstance());
*SimpleRandomizer::getInstance());
for (const auto& p : ports) { for (const auto& p : ports) {
port = p; port = p;
if(bind(port, addr)) { if(bind(port, addr)) {

View File

@ -211,9 +211,8 @@ DefaultBtRequestFactory::createRequestMessagesOnEndGame(size_t max)
} }
} }
} }
std::random_shuffle(std::begin(missingBlockIndexes), std::shuffle(std::begin(missingBlockIndexes), std::end(missingBlockIndexes),
std::end(missingBlockIndexes), *SimpleRandomizer::getInstance());
*SimpleRandomizer::getInstance());
for(auto bitr = std::begin(missingBlockIndexes), for(auto bitr = std::begin(missingBlockIndexes),
eoi2 = std::end(missingBlockIndexes); eoi2 = std::end(missingBlockIndexes);
bitr != eoi2 && requests.size() < max; ++bitr) { bitr != eoi2 && requests.size() < max; ++bitr) {

View File

@ -67,6 +67,7 @@
#include "Notifier.h" #include "Notifier.h"
#include "WrDiskCache.h" #include "WrDiskCache.h"
#include "RequestGroup.h" #include "RequestGroup.h"
#include "SimpleRandomizer.h"
#ifdef ENABLE_BITTORRENT #ifdef ENABLE_BITTORRENT
# include "bittorrent_helper.h" # include "bittorrent_helper.h"
#endif // ENABLE_BITTORRENT #endif // ENABLE_BITTORRENT
@ -201,7 +202,8 @@ void DefaultPieceStorage::getMissingPiece
indexes.push_back(i); indexes.push_back(i);
} }
} }
std::random_shuffle(indexes.begin(), indexes.end()); std::shuffle(indexes.begin(), indexes.end(),
*SimpleRandomizer::getInstance());
for(std::vector<size_t>::const_iterator i = indexes.begin(), for(std::vector<size_t>::const_iterator i = indexes.begin(),
eoi = indexes.end(); i != eoi && misBlock < minMissingBlocks; ++i) { eoi = indexes.end(); i != eoi && misBlock < minMissingBlocks; ++i) {
std::shared_ptr<Piece> piece = checkOutPiece(*i, cuid); std::shared_ptr<Piece> piece = checkOutPiece(*i, cuid);

View File

@ -98,8 +98,8 @@ public:
} // namespace } // namespace
void MetalinkEntry::reorderResourcesByPriority() { void MetalinkEntry::reorderResourcesByPriority() {
std::random_shuffle(std::begin(resources), std::end(resources), std::shuffle(std::begin(resources), std::end(resources),
*SimpleRandomizer::getInstance()); *SimpleRandomizer::getInstance());
std::sort(std::begin(resources), std::end(resources), std::sort(std::begin(resources), std::end(resources),
PriorityHigher<std::unique_ptr<MetalinkResource>>{}); PriorityHigher<std::unique_ptr<MetalinkResource>>{});
} }

View File

@ -70,8 +70,7 @@ bool PeerListenCommand::bindPort(uint16_t& port, SegList<int>& sgl)
while(sgl.hasNext()) { while(sgl.hasNext()) {
ports.push_back(sgl.next()); ports.push_back(sgl.next());
} }
std::random_shuffle(ports.begin(), ports.end(), std::shuffle(ports.begin(), ports.end(), *SimpleRandomizer::getInstance());
*SimpleRandomizer::getInstance());
const int ipv = (family_ == AF_INET) ? 4 : 6; const int ipv = (family_ == AF_INET) ? 4 : 6;
for(std::vector<uint16_t>::const_iterator i = ports.begin(), for(std::vector<uint16_t>::const_iterator i = ports.begin(),
eoi = ports.end(); i != eoi; ++i) { eoi = ports.end(); i != eoi; ++i) {

View File

@ -51,8 +51,8 @@ PieceStatMan::PieceStatMan(size_t pieceNum, bool randomShuffle):
} }
// we need some randomness in ordering. // we need some randomness in ordering.
if(randomShuffle) { if(randomShuffle) {
std::random_shuffle(order_.begin(), order_.end(), std::shuffle(order_.begin(), order_.end(),
*SimpleRandomizer::getInstance()); *SimpleRandomizer::getInstance());
} }
} }

View File

@ -565,8 +565,8 @@ void RequestGroup::initPieceStorage()
downloadContext_->getFileEntries(), downloadContext_->getFileEntries(),
downloadContext_->getPieceLength()); downloadContext_->getPieceLength());
if (!result.empty()) { if (!result.empty()) {
std::random_shuffle(std::begin(result), std::end(result), std::shuffle(std::begin(result), std::end(result),
*SimpleRandomizer::getInstance()); *SimpleRandomizer::getInstance());
auto priSelector = make_unique<PriorityPieceSelector> auto priSelector = make_unique<PriorityPieceSelector>
(ps->popPieceSelector()); (ps->popPieceSelector());
priSelector->setPriorityPiece(std::begin(result), std::end(result)); priSelector->setPriorityPiece(std::begin(result), std::end(result));

View File

@ -200,8 +200,8 @@ createBtRequestGroup(const std::string& metaInfoUri,
metaInfoUri.empty() ? "default" : metaInfoUri); metaInfoUri.empty() ? "default" : metaInfoUri);
for (auto &fe : dctx->getFileEntries()) { for (auto &fe : dctx->getFileEntries()) {
auto &uris = fe->getRemainingUris(); auto &uris = fe->getRemainingUris();
std::random_shuffle(std::begin(uris), std::end(uris), std::shuffle(std::begin(uris), std::end(uris),
*SimpleRandomizer::getInstance()); *SimpleRandomizer::getInstance());
} }
if(metaInfoUri.empty()) { if(metaInfoUri.empty()) {
rg->setMetadataInfo(createMetadataInfoDataOnly()); rg->setMetadataInfo(createMetadataInfoDataOnly());