diff --git a/src/BtSetup.cc b/src/BtSetup.cc index f5a1467b..1edf22ea 100644 --- a/src/BtSetup.cc +++ b/src/BtSetup.cc @@ -156,27 +156,26 @@ void BtSetup::setup(std::vector>& commands, } } if(!metadataGetMode) { - std::shared_ptr unionCri(new UnionSeedCriteria()); + auto unionCri = make_unique(); if(option->defined(PREF_SEED_TIME)) { - std::shared_ptr cri - (new TimeSeedCriteria(option->getAsInt(PREF_SEED_TIME)*60)); - unionCri->addSeedCriteria(cri); + unionCri->addSeedCriteria(make_unique + (option->getAsInt(PREF_SEED_TIME)*60)); } { double ratio = option->getAsDouble(PREF_SEED_RATIO); if(ratio > 0.0) { - std::shared_ptr cri - (new ShareRatioSeedCriteria(option->getAsDouble(PREF_SEED_RATIO), - requestGroup->getDownloadContext())); + auto cri = make_unique + (option->getAsDouble(PREF_SEED_RATIO), + requestGroup->getDownloadContext()); cri->setPieceStorage(pieceStorage); cri->setBtRuntime(btRuntime); - unionCri->addSeedCriteria(cri); + unionCri->addSeedCriteria(std::move(cri)); } } if(!unionCri->getSeedCriterion().empty()) { auto c = make_unique - (e->newCUID(), requestGroup, e, unionCri); + (e->newCUID(), requestGroup, e, std::move(unionCri)); c->setPieceStorage(pieceStorage); c->setBtRuntime(btRuntime); commands.push_back(std::move(c)); diff --git a/src/SeedCheckCommand.cc b/src/SeedCheckCommand.cc index 59801526..5ce5a206 100644 --- a/src/SeedCheckCommand.cc +++ b/src/SeedCheckCommand.cc @@ -49,11 +49,11 @@ SeedCheckCommand::SeedCheckCommand (cuid_t cuid, RequestGroup* requestGroup, DownloadEngine* e, - const std::shared_ptr& seedCriteria) + std::unique_ptr seedCriteria) : Command(cuid), requestGroup_(requestGroup), e_(e), - seedCriteria_(seedCriteria), + seedCriteria_(std::move(seedCriteria)), checkStarted_(false) { setStatusRealtime(); @@ -88,12 +88,6 @@ bool SeedCheckCommand::execute() { return false; } -void SeedCheckCommand::setSeedCriteria -(const std::shared_ptr& seedCriteria) -{ - seedCriteria_ = seedCriteria; -} - void SeedCheckCommand::setBtRuntime(const std::shared_ptr& btRuntime) { btRuntime_ = btRuntime; diff --git a/src/SeedCheckCommand.h b/src/SeedCheckCommand.h index 127211ab..172a6190 100644 --- a/src/SeedCheckCommand.h +++ b/src/SeedCheckCommand.h @@ -54,20 +54,18 @@ private: DownloadEngine* e_; std::shared_ptr pieceStorage_; std::shared_ptr btRuntime_; - std::shared_ptr seedCriteria_; + std::unique_ptr seedCriteria_; bool checkStarted_; public: SeedCheckCommand(cuid_t cuid, RequestGroup* requestGroup, DownloadEngine* e, - const std::shared_ptr& seedCriteria); + std::unique_ptr seedCriteria); virtual ~SeedCheckCommand(); virtual bool execute(); - void setSeedCriteria(const std::shared_ptr& seedCriteria); - void setBtRuntime(const std::shared_ptr& btRuntime); void setPieceStorage(const std::shared_ptr& pieceStorage); diff --git a/src/UnionSeedCriteria.cc b/src/UnionSeedCriteria.cc index f06eca0b..4359cccd 100644 --- a/src/UnionSeedCriteria.cc +++ b/src/UnionSeedCriteria.cc @@ -38,44 +38,29 @@ namespace aria2 { -namespace { -class Reset { -public: - void operator()(const std::shared_ptr& cri) - { - cri->reset(); - } -}; -} // namespace - -namespace { -class Eval { -public: - bool operator()(const std::shared_ptr& cri) - { - return cri->evaluate(); - } -}; -} // namespace - UnionSeedCriteria::UnionSeedCriteria() {} UnionSeedCriteria::~UnionSeedCriteria() {} void UnionSeedCriteria::reset() { - std::for_each(criterion_.begin(), criterion_.end(), Reset()); + for(const auto& c : criterion_) { + c->reset(); + } } bool UnionSeedCriteria::evaluate() { - std::vector >::iterator itr = - std::find_if(criterion_.begin(), criterion_.end(), Eval()); - return itr != criterion_.end(); + for(const auto& c : criterion_) { + if(c->evaluate()) { + return true; + } + } + return false; } -void UnionSeedCriteria::addSeedCriteria(const std::shared_ptr& cri) +void UnionSeedCriteria::addSeedCriteria(std::unique_ptr cri) { - criterion_.push_back(cri); + criterion_.push_back(std::move(cri)); } } // namespace aria2 diff --git a/src/UnionSeedCriteria.h b/src/UnionSeedCriteria.h index 1e50e913..68910ecf 100644 --- a/src/UnionSeedCriteria.h +++ b/src/UnionSeedCriteria.h @@ -44,7 +44,7 @@ namespace aria2 { class UnionSeedCriteria : public SeedCriteria { private: - std::vector > criterion_; + std::vector> criterion_; public: UnionSeedCriteria(); virtual ~UnionSeedCriteria(); @@ -53,9 +53,9 @@ public: virtual bool evaluate(); - void addSeedCriteria(const std::shared_ptr& cri); + void addSeedCriteria(std::unique_ptr cri); - const std::vector >& getSeedCriterion() const + const std::vector>& getSeedCriterion() const { return criterion_; }