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) {
|
if(!metadataGetMode) {
|
||||||
std::shared_ptr<UnionSeedCriteria> unionCri(new UnionSeedCriteria());
|
auto unionCri = make_unique<UnionSeedCriteria>();
|
||||||
if(option->defined(PREF_SEED_TIME)) {
|
if(option->defined(PREF_SEED_TIME)) {
|
||||||
std::shared_ptr<SeedCriteria> cri
|
unionCri->addSeedCriteria(make_unique<TimeSeedCriteria>
|
||||||
(new TimeSeedCriteria(option->getAsInt(PREF_SEED_TIME)*60));
|
(option->getAsInt(PREF_SEED_TIME)*60));
|
||||||
unionCri->addSeedCriteria(cri);
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
double ratio = option->getAsDouble(PREF_SEED_RATIO);
|
double ratio = option->getAsDouble(PREF_SEED_RATIO);
|
||||||
if(ratio > 0.0) {
|
if(ratio > 0.0) {
|
||||||
std::shared_ptr<ShareRatioSeedCriteria> cri
|
auto cri = make_unique<ShareRatioSeedCriteria>
|
||||||
(new ShareRatioSeedCriteria(option->getAsDouble(PREF_SEED_RATIO),
|
(option->getAsDouble(PREF_SEED_RATIO),
|
||||||
requestGroup->getDownloadContext()));
|
requestGroup->getDownloadContext());
|
||||||
cri->setPieceStorage(pieceStorage);
|
cri->setPieceStorage(pieceStorage);
|
||||||
cri->setBtRuntime(btRuntime);
|
cri->setBtRuntime(btRuntime);
|
||||||
|
|
||||||
unionCri->addSeedCriteria(cri);
|
unionCri->addSeedCriteria(std::move(cri));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!unionCri->getSeedCriterion().empty()) {
|
if(!unionCri->getSeedCriterion().empty()) {
|
||||||
auto c = make_unique<SeedCheckCommand>
|
auto c = make_unique<SeedCheckCommand>
|
||||||
(e->newCUID(), requestGroup, e, unionCri);
|
(e->newCUID(), requestGroup, e, std::move(unionCri));
|
||||||
c->setPieceStorage(pieceStorage);
|
c->setPieceStorage(pieceStorage);
|
||||||
c->setBtRuntime(btRuntime);
|
c->setBtRuntime(btRuntime);
|
||||||
commands.push_back(std::move(c));
|
commands.push_back(std::move(c));
|
||||||
|
|
|
@ -49,11 +49,11 @@ SeedCheckCommand::SeedCheckCommand
|
||||||
(cuid_t cuid,
|
(cuid_t cuid,
|
||||||
RequestGroup* requestGroup,
|
RequestGroup* requestGroup,
|
||||||
DownloadEngine* e,
|
DownloadEngine* e,
|
||||||
const std::shared_ptr<SeedCriteria>& seedCriteria)
|
std::unique_ptr<SeedCriteria> seedCriteria)
|
||||||
: Command(cuid),
|
: Command(cuid),
|
||||||
requestGroup_(requestGroup),
|
requestGroup_(requestGroup),
|
||||||
e_(e),
|
e_(e),
|
||||||
seedCriteria_(seedCriteria),
|
seedCriteria_(std::move(seedCriteria)),
|
||||||
checkStarted_(false)
|
checkStarted_(false)
|
||||||
{
|
{
|
||||||
setStatusRealtime();
|
setStatusRealtime();
|
||||||
|
@ -88,12 +88,6 @@ bool SeedCheckCommand::execute() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SeedCheckCommand::setSeedCriteria
|
|
||||||
(const std::shared_ptr<SeedCriteria>& seedCriteria)
|
|
||||||
{
|
|
||||||
seedCriteria_ = seedCriteria;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SeedCheckCommand::setBtRuntime(const std::shared_ptr<BtRuntime>& btRuntime)
|
void SeedCheckCommand::setBtRuntime(const std::shared_ptr<BtRuntime>& btRuntime)
|
||||||
{
|
{
|
||||||
btRuntime_ = btRuntime;
|
btRuntime_ = btRuntime;
|
||||||
|
|
|
@ -54,20 +54,18 @@ private:
|
||||||
DownloadEngine* e_;
|
DownloadEngine* e_;
|
||||||
std::shared_ptr<PieceStorage> pieceStorage_;
|
std::shared_ptr<PieceStorage> pieceStorage_;
|
||||||
std::shared_ptr<BtRuntime> btRuntime_;
|
std::shared_ptr<BtRuntime> btRuntime_;
|
||||||
std::shared_ptr<SeedCriteria> seedCriteria_;
|
std::unique_ptr<SeedCriteria> seedCriteria_;
|
||||||
bool checkStarted_;
|
bool checkStarted_;
|
||||||
public:
|
public:
|
||||||
SeedCheckCommand(cuid_t cuid,
|
SeedCheckCommand(cuid_t cuid,
|
||||||
RequestGroup* requestGroup,
|
RequestGroup* requestGroup,
|
||||||
DownloadEngine* e,
|
DownloadEngine* e,
|
||||||
const std::shared_ptr<SeedCriteria>& seedCriteria);
|
std::unique_ptr<SeedCriteria> seedCriteria);
|
||||||
|
|
||||||
virtual ~SeedCheckCommand();
|
virtual ~SeedCheckCommand();
|
||||||
|
|
||||||
virtual bool execute();
|
virtual bool execute();
|
||||||
|
|
||||||
void setSeedCriteria(const std::shared_ptr<SeedCriteria>& seedCriteria);
|
|
||||||
|
|
||||||
void setBtRuntime(const std::shared_ptr<BtRuntime>& btRuntime);
|
void setBtRuntime(const std::shared_ptr<BtRuntime>& btRuntime);
|
||||||
|
|
||||||
void setPieceStorage(const std::shared_ptr<PieceStorage>& pieceStorage);
|
void setPieceStorage(const std::shared_ptr<PieceStorage>& pieceStorage);
|
||||||
|
|
|
@ -38,44 +38,29 @@
|
||||||
|
|
||||||
namespace aria2 {
|
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() {}
|
||||||
UnionSeedCriteria::~UnionSeedCriteria() {}
|
UnionSeedCriteria::~UnionSeedCriteria() {}
|
||||||
|
|
||||||
void UnionSeedCriteria::reset()
|
void UnionSeedCriteria::reset()
|
||||||
{
|
{
|
||||||
std::for_each(criterion_.begin(), criterion_.end(), Reset());
|
for(const auto& c : criterion_) {
|
||||||
|
c->reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UnionSeedCriteria::evaluate()
|
bool UnionSeedCriteria::evaluate()
|
||||||
{
|
{
|
||||||
std::vector<std::shared_ptr<SeedCriteria> >::iterator itr =
|
for(const auto& c : criterion_) {
|
||||||
std::find_if(criterion_.begin(), criterion_.end(), Eval());
|
if(c->evaluate()) {
|
||||||
return itr != criterion_.end();
|
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
|
} // namespace aria2
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace aria2 {
|
||||||
|
|
||||||
class UnionSeedCriteria : public SeedCriteria {
|
class UnionSeedCriteria : public SeedCriteria {
|
||||||
private:
|
private:
|
||||||
std::vector<std::shared_ptr<SeedCriteria> > criterion_;
|
std::vector<std::unique_ptr<SeedCriteria>> criterion_;
|
||||||
public:
|
public:
|
||||||
UnionSeedCriteria();
|
UnionSeedCriteria();
|
||||||
virtual ~UnionSeedCriteria();
|
virtual ~UnionSeedCriteria();
|
||||||
|
@ -53,9 +53,9 @@ public:
|
||||||
|
|
||||||
virtual bool evaluate();
|
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_;
|
return criterion_;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue