pull/861/head
Tatsuhiro Tsujikawa 2017-03-02 22:40:36 +09:00
parent 924e115e3e
commit 9eff8100ef
2 changed files with 25 additions and 25 deletions

View File

@ -60,30 +60,30 @@ BtFileAllocationEntry::~BtFileAllocationEntry() = default;
void BtFileAllocationEntry::prepareForNextAction(
std::vector<std::unique_ptr<Command>>& commands, DownloadEngine* e)
{
auto& option = getRequestGroup()->getOption();
auto rg = getRequestGroup();
auto& dctx = rg->getDownloadContext();
auto& ps = rg->getPieceStorage();
auto diskAdaptor = ps->getDiskAdaptor();
auto& option = rg->getOption();
BtSetup().setup(commands, getRequestGroup(), e, option.get());
BtSetup().setup(commands, rg, e, option.get());
if (option->getAsBool(PREF_ENABLE_MMAP) &&
option->get(PREF_FILE_ALLOCATION) != V_NONE &&
getRequestGroup()->getPieceStorage()->getDiskAdaptor()->size() <=
option->getAsLLInt(PREF_MAX_MMAP_LIMIT)) {
getRequestGroup()->getPieceStorage()->getDiskAdaptor()->enableMmap();
diskAdaptor->size() <= option->getAsLLInt(PREF_MAX_MMAP_LIMIT)) {
diskAdaptor->enableMmap();
}
if (!getRequestGroup()->downloadFinished()) {
if (!rg->downloadFinished()) {
// For DownloadContext::resetDownloadStartTime(), see also
// RequestGroup::createInitialCommand()
getRequestGroup()->getDownloadContext()->resetDownloadStartTime();
const std::vector<std::shared_ptr<FileEntry>>& fileEntries =
getRequestGroup()->getDownloadContext()->getFileEntries();
dctx->resetDownloadStartTime();
const auto& fileEntries = dctx->getFileEntries();
if (isUriSuppliedForRequsetFileEntry(std::begin(fileEntries),
std::end(fileEntries))) {
getRequestGroup()->createNextCommandWithAdj(commands, e, 0);
rg->createNextCommandWithAdj(commands, e, 0);
}
}
else {
#ifdef __MINGW32__
const std::shared_ptr<DiskAdaptor>& diskAdaptor =
getRequestGroup()->getPieceStorage()->getDiskAdaptor();
if (!diskAdaptor->isReadOnlyEnabled()) {
// On Windows, if aria2 opens files with GENERIC_WRITE access
// right, some programs cannot open them aria2 is seeding. To
@ -96,7 +96,7 @@ void BtFileAllocationEntry::prepareForNextAction(
diskAdaptor->openFile();
}
#endif // __MINGW32__
getRequestGroup()->enableSeedOnly();
rg->enableSeedOnly();
}
}

View File

@ -60,28 +60,28 @@ StreamFileAllocationEntry::~StreamFileAllocationEntry() = default;
void StreamFileAllocationEntry::prepareForNextAction(
std::vector<std::unique_ptr<Command>>& commands, DownloadEngine* e)
{
auto& option = getRequestGroup()->getOption();
auto rg = getRequestGroup();
auto& dctx = rg->getDownloadContext();
auto& ps = rg->getPieceStorage();
auto diskAdaptor = ps->getDiskAdaptor();
auto& option = rg->getOption();
// For DownloadContext::resetDownloadStartTime(), see also
// RequestGroup::createInitialCommand()
getRequestGroup()->getDownloadContext()->resetDownloadStartTime();
dctx->resetDownloadStartTime();
if (option->getAsBool(PREF_ENABLE_MMAP) &&
option->get(PREF_FILE_ALLOCATION) != V_NONE &&
getRequestGroup()->getPieceStorage()->getDiskAdaptor()->size() <=
option->getAsLLInt(PREF_MAX_MMAP_LIMIT)) {
getRequestGroup()->getPieceStorage()->getDiskAdaptor()->enableMmap();
diskAdaptor->size() <= option->getAsLLInt(PREF_MAX_MMAP_LIMIT)) {
diskAdaptor->enableMmap();
}
if (getNextCommand()) {
// Reset download start time of PeerStat because it is started
// before file allocation begins.
const std::shared_ptr<DownloadContext>& dctx =
getRequestGroup()->getDownloadContext();
const std::vector<std::shared_ptr<FileEntry>>& fileEntries =
dctx->getFileEntries();
const auto& fileEntries = dctx->getFileEntries();
for (auto& f : fileEntries) {
const auto& reqs = f->getInFlightRequests();
for (auto& req : reqs) {
const std::shared_ptr<PeerStat>& peerStat = req->getPeerStat();
const auto& peerStat = req->getPeerStat();
if (peerStat) {
peerStat->downloadStart();
}
@ -92,10 +92,10 @@ void StreamFileAllocationEntry::prepareForNextAction(
e->setNoWait(true);
commands.push_back(popNextCommand());
// try remaining uris
getRequestGroup()->createNextCommandWithAdj(commands, e, -1);
rg->createNextCommandWithAdj(commands, e, -1);
}
else {
getRequestGroup()->createNextCommandWithAdj(commands, e, 0);
rg->createNextCommandWithAdj(commands, e, 0);
}
}