浏览代码

Use std::unique_ptr for UnionSeedCriteria

Tatsuhiro Tsujikawa 12 年之前
父节点
当前提交
c0b60eb087
共有 5 个文件被更改,包括 26 次插入50 次删除
  1. 8 9
      src/BtSetup.cc
  2. 2 8
      src/SeedCheckCommand.cc
  3. 2 4
      src/SeedCheckCommand.h
  4. 11 26
      src/UnionSeedCriteria.cc
  5. 3 3
      src/UnionSeedCriteria.h

+ 8 - 9
src/BtSetup.cc

@@ -156,27 +156,26 @@ void BtSetup::setup(std::vector<std::unique_ptr<Command>>& commands,
     }
   }
   if(!metadataGetMode) {
-    std::shared_ptr<UnionSeedCriteria> unionCri(new UnionSeedCriteria());
+    auto unionCri = make_unique<UnionSeedCriteria>();
     if(option->defined(PREF_SEED_TIME)) {
-      std::shared_ptr<SeedCriteria> cri
-        (new TimeSeedCriteria(option->getAsInt(PREF_SEED_TIME)*60));
-      unionCri->addSeedCriteria(cri);
+      unionCri->addSeedCriteria(make_unique<TimeSeedCriteria>
+                                (option->getAsInt(PREF_SEED_TIME)*60));
     }
     {
       double ratio = option->getAsDouble(PREF_SEED_RATIO);
       if(ratio > 0.0) {
-        std::shared_ptr<ShareRatioSeedCriteria> cri
-          (new ShareRatioSeedCriteria(option->getAsDouble(PREF_SEED_RATIO),
-                                      requestGroup->getDownloadContext()));
+        auto cri = make_unique<ShareRatioSeedCriteria>
+          (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<SeedCheckCommand>
-        (e->newCUID(), requestGroup, e, unionCri);
+        (e->newCUID(), requestGroup, e, std::move(unionCri));
       c->setPieceStorage(pieceStorage);
       c->setBtRuntime(btRuntime);
       commands.push_back(std::move(c));

+ 2 - 8
src/SeedCheckCommand.cc

@@ -49,11 +49,11 @@ SeedCheckCommand::SeedCheckCommand
 (cuid_t cuid,
  RequestGroup* requestGroup,
  DownloadEngine* e,
- const std::shared_ptr<SeedCriteria>& seedCriteria)
+ std::unique_ptr<SeedCriteria> 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_ = seedCriteria;
-}
-
 void SeedCheckCommand::setBtRuntime(const std::shared_ptr<BtRuntime>& btRuntime)
 {
   btRuntime_ = btRuntime;

+ 2 - 4
src/SeedCheckCommand.h

@@ -54,20 +54,18 @@ private:
   DownloadEngine* e_;
   std::shared_ptr<PieceStorage> pieceStorage_;
   std::shared_ptr<BtRuntime> btRuntime_;
-  std::shared_ptr<SeedCriteria> seedCriteria_;
+  std::unique_ptr<SeedCriteria> seedCriteria_;
   bool checkStarted_;
 public:
   SeedCheckCommand(cuid_t cuid,
                    RequestGroup* requestGroup,
                    DownloadEngine* e,
-                   const std::shared_ptr<SeedCriteria>& seedCriteria);
+                   std::unique_ptr<SeedCriteria> seedCriteria);
 
   virtual ~SeedCheckCommand();
 
   virtual bool execute();
 
-  void setSeedCriteria(const std::shared_ptr<SeedCriteria>& seedCriteria);
-
   void setBtRuntime(const std::shared_ptr<BtRuntime>& btRuntime);
 
   void setPieceStorage(const std::shared_ptr<PieceStorage>& pieceStorage);

+ 11 - 26
src/UnionSeedCriteria.cc

@@ -38,44 +38,29 @@
 
 namespace aria2 {
 
-namespace {
-class Reset {
-public:
-  void operator()(const std::shared_ptr<SeedCriteria>& cri)
-  {
-    cri->reset();
-  }
-};
-} // namespace
-
-namespace {
-class Eval {
-public:
-  bool operator()(const std::shared_ptr<SeedCriteria>& 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<std::shared_ptr<SeedCriteria> >::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<SeedCriteria>& cri)
+void UnionSeedCriteria::addSeedCriteria(std::unique_ptr<SeedCriteria> cri)
 {
-  criterion_.push_back(cri);
+  criterion_.push_back(std::move(cri));
 }
 
 } // namespace aria2

+ 3 - 3
src/UnionSeedCriteria.h

@@ -44,7 +44,7 @@ namespace aria2 {
 
 class UnionSeedCriteria : public SeedCriteria {
 private:
-  std::vector<std::shared_ptr<SeedCriteria> > criterion_;
+  std::vector<std::unique_ptr<SeedCriteria>> criterion_;
 public:
   UnionSeedCriteria();
   virtual ~UnionSeedCriteria();
@@ -53,9 +53,9 @@ public:
 
   virtual bool evaluate();
 
-  void addSeedCriteria(const std::shared_ptr<SeedCriteria>& cri);
+  void addSeedCriteria(std::unique_ptr<SeedCriteria> cri);
 
-  const std::vector<std::shared_ptr<SeedCriteria> >& getSeedCriterion() const
+  const std::vector<std::unique_ptr<SeedCriteria>>& getSeedCriterion() const
   {
     return criterion_;
   }