mirror of https://github.com/aria2/aria2
Use std::unique_ptr for UnionSeedCriteria
parent
fa9f3fb5a3
commit
c0b60eb087
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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_;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue