/* */ #include "StreamFileAllocationEntry.h" #include #include "DownloadEngine.h" #include "Option.h" #include "Request.h" #include "prefs.h" #include "RequestGroup.h" #include "InitiateConnectionCommandFactory.h" #include "DownloadContext.h" namespace aria2 { StreamFileAllocationEntry::StreamFileAllocationEntry(const RequestHandle& currentRequest, RequestGroup* requestGroup, Command* nextCommand): FileAllocationEntry(requestGroup, nextCommand), _currentRequest(currentRequest) {} StreamFileAllocationEntry::~StreamFileAllocationEntry() {} void StreamFileAllocationEntry::prepareForNextAction(std::deque& commands, DownloadEngine* e) { _requestGroup->getDownloadContext()->resetDownloadStartTime(); if(_nextCommand) { // give _nextCommand a chance to execute in the next execution loop. _nextCommand->setStatus(Command::STATUS_ONESHOT_REALTIME); commands.push_back(popNextCommand()); // try remaining uris _requestGroup->createNextCommandWithAdj(commands, e, -1); } else { if(_currentRequest.isNull()) { _requestGroup->createNextCommandWithAdj(commands, e, 0); } else { Command* command = InitiateConnectionCommandFactory::createInitiateConnectionCommand (e->newCUID(), _currentRequest, _requestGroup, e); commands.push_back(command); _requestGroup->createNextCommandWithAdj(commands, e, -1); } } } } // namespace aria2