mirror of https://github.com/aria2/aria2
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Call RequestGroupMan::requestQueueCheck() when max-concurrent-downloads option is changed or new downloads are added/inserted into reserved list. * src/RequestGroupMan.cc * src/XmlRpcMethodImpl.ccpull/1/head
parent
41e203bf84
commit
e5e561afba
|
@ -1,3 +1,11 @@
|
||||||
|
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Call RequestGroupMan::requestQueueCheck() when
|
||||||
|
max-concurrent-downloads option is changed or new downloads are
|
||||||
|
added/inserted into reserved list.
|
||||||
|
* src/RequestGroupMan.cc
|
||||||
|
* src/XmlRpcMethodImpl.cc
|
||||||
|
|
||||||
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Added aria2.forceRemove XML-RPC method.
|
Added aria2.forceRemove XML-RPC method.
|
||||||
|
|
|
@ -106,18 +106,27 @@ void RequestGroupMan::addRequestGroup
|
||||||
void RequestGroupMan::addReservedGroup
|
void RequestGroupMan::addReservedGroup
|
||||||
(const std::vector<SharedHandle<RequestGroup> >& groups)
|
(const std::vector<SharedHandle<RequestGroup> >& groups)
|
||||||
{
|
{
|
||||||
|
if(_reservedGroups.empty()) {
|
||||||
|
requestQueueCheck();
|
||||||
|
}
|
||||||
_reservedGroups.insert(_reservedGroups.end(), groups.begin(), groups.end());
|
_reservedGroups.insert(_reservedGroups.end(), groups.begin(), groups.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RequestGroupMan::addReservedGroup
|
void RequestGroupMan::addReservedGroup
|
||||||
(const SharedHandle<RequestGroup>& group)
|
(const SharedHandle<RequestGroup>& group)
|
||||||
{
|
{
|
||||||
|
if(_reservedGroups.empty()) {
|
||||||
|
requestQueueCheck();
|
||||||
|
}
|
||||||
_reservedGroups.push_back(group);
|
_reservedGroups.push_back(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RequestGroupMan::insertReservedGroup
|
void RequestGroupMan::insertReservedGroup
|
||||||
(size_t pos, const std::vector<SharedHandle<RequestGroup> >& groups)
|
(size_t pos, const std::vector<SharedHandle<RequestGroup> >& groups)
|
||||||
{
|
{
|
||||||
|
if(_reservedGroups.empty()) {
|
||||||
|
requestQueueCheck();
|
||||||
|
}
|
||||||
_reservedGroups.insert
|
_reservedGroups.insert
|
||||||
(_reservedGroups.begin()+std::min(_reservedGroups.size(), pos),
|
(_reservedGroups.begin()+std::min(_reservedGroups.size(), pos),
|
||||||
groups.begin(), groups.end());
|
groups.begin(), groups.end());
|
||||||
|
@ -126,6 +135,9 @@ void RequestGroupMan::insertReservedGroup
|
||||||
void RequestGroupMan::insertReservedGroup
|
void RequestGroupMan::insertReservedGroup
|
||||||
(size_t pos, const SharedHandle<RequestGroup>& group)
|
(size_t pos, const SharedHandle<RequestGroup>& group)
|
||||||
{
|
{
|
||||||
|
if(_reservedGroups.empty()) {
|
||||||
|
requestQueueCheck();
|
||||||
|
}
|
||||||
_reservedGroups.insert
|
_reservedGroups.insert
|
||||||
(_reservedGroups.begin()+std::min(_reservedGroups.size(), pos), group);
|
(_reservedGroups.begin()+std::min(_reservedGroups.size(), pos), group);
|
||||||
}
|
}
|
||||||
|
@ -304,7 +316,6 @@ static void executeStopHook
|
||||||
class ProcessStoppedRequestGroup {
|
class ProcessStoppedRequestGroup {
|
||||||
private:
|
private:
|
||||||
DownloadEngine* _e;
|
DownloadEngine* _e;
|
||||||
std::deque<SharedHandle<RequestGroup> >& _reservedGroups;
|
|
||||||
std::deque<SharedHandle<DownloadResult> >& _downloadResults;
|
std::deque<SharedHandle<DownloadResult> >& _downloadResults;
|
||||||
Logger* _logger;
|
Logger* _logger;
|
||||||
|
|
||||||
|
@ -326,10 +337,8 @@ private:
|
||||||
public:
|
public:
|
||||||
ProcessStoppedRequestGroup
|
ProcessStoppedRequestGroup
|
||||||
(DownloadEngine* e,
|
(DownloadEngine* e,
|
||||||
std::deque<SharedHandle<RequestGroup> >& reservedGroups,
|
|
||||||
std::deque<SharedHandle<DownloadResult> >& downloadResults):
|
std::deque<SharedHandle<DownloadResult> >& downloadResults):
|
||||||
_e(e),
|
_e(e),
|
||||||
_reservedGroups(reservedGroups),
|
|
||||||
_downloadResults(downloadResults),
|
_downloadResults(downloadResults),
|
||||||
_logger(LogFactory::getInstance()) {}
|
_logger(LogFactory::getInstance()) {}
|
||||||
|
|
||||||
|
@ -365,8 +374,7 @@ public:
|
||||||
("Adding %lu RequestGroups as a result of PostDownloadHandler.",
|
("Adding %lu RequestGroups as a result of PostDownloadHandler.",
|
||||||
static_cast<unsigned long>(nextGroups.size()));
|
static_cast<unsigned long>(nextGroups.size()));
|
||||||
}
|
}
|
||||||
_reservedGroups.insert(_reservedGroups.begin(),
|
_e->_requestGroupMan->insertReservedGroup(0, nextGroups);
|
||||||
nextGroups.begin(), nextGroups.end());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
group->saveControlFile();
|
group->saveControlFile();
|
||||||
|
@ -444,8 +452,7 @@ void RequestGroupMan::removeStoppedGroup(DownloadEngine* e)
|
||||||
updateServerStat();
|
updateServerStat();
|
||||||
|
|
||||||
std::for_each(_requestGroups.begin(), _requestGroups.end(),
|
std::for_each(_requestGroups.begin(), _requestGroups.end(),
|
||||||
ProcessStoppedRequestGroup(e, _reservedGroups,
|
ProcessStoppedRequestGroup(e, _downloadResults));
|
||||||
_downloadResults));
|
|
||||||
|
|
||||||
std::deque<SharedHandle<RequestGroup> >::iterator i =
|
std::deque<SharedHandle<RequestGroup> >::iterator i =
|
||||||
std::remove_if(_requestGroups.begin(),
|
std::remove_if(_requestGroups.begin(),
|
||||||
|
|
|
@ -774,6 +774,7 @@ BDE ChangeGlobalOptionXmlRpcMethod::process
|
||||||
if(option->defined(PREF_MAX_CONCURRENT_DOWNLOADS)) {
|
if(option->defined(PREF_MAX_CONCURRENT_DOWNLOADS)) {
|
||||||
e->_requestGroupMan->setMaxSimultaneousDownloads
|
e->_requestGroupMan->setMaxSimultaneousDownloads
|
||||||
(option->getAsInt(PREF_MAX_CONCURRENT_DOWNLOADS));
|
(option->getAsInt(PREF_MAX_CONCURRENT_DOWNLOADS));
|
||||||
|
e->_requestGroupMan->requestQueueCheck();
|
||||||
}
|
}
|
||||||
return BDE_OK;
|
return BDE_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue