diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-12-19 23:03:48 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-12-19 23:03:48 +0900 |
| commit | 07bb779eb05478864efb8b5f4d264945bb3f30ac (patch) | |
| tree | fe0754f0eb748595214808b51b49b9e4c959366a /src/RpcMethodImpl.cc | |
| parent | d2892cf7b467c62b63c12a57c7c0ab424b79f7b1 (diff) | |
Faster deletion of RequestGroup and DownloadResult lists
Diffstat (limited to 'src/RpcMethodImpl.cc')
| -rw-r--r-- | src/RpcMethodImpl.cc | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/RpcMethodImpl.cc b/src/RpcMethodImpl.cc index d93e3c8e..60bed122 100644 --- a/src/RpcMethodImpl.cc +++ b/src/RpcMethodImpl.cc @@ -48,7 +48,6 @@ #include "RequestGroup.h" #include "download_helper.h" #include "util.h" -#include "RequestGroupMan.h" #include "fmt.h" #include "RpcRequest.h" #include "PieceStorage.h" @@ -486,7 +485,7 @@ void pauseRequestGroups (InputIterator first, InputIterator last, bool reserved, bool forcePause) { for(; first != last; ++first) { - pauseRequestGroup(*first, reserved, forcePause); + pauseRequestGroup((*first).second, reserved, forcePause); } } } // namespace @@ -495,10 +494,9 @@ namespace { SharedHandle<ValueBase> pauseAllDownloads (const RpcRequest& req, DownloadEngine* e, bool forcePause) { - const std::deque<SharedHandle<RequestGroup> >& groups = - e->getRequestGroupMan()->getRequestGroups(); + const RequestGroupList& groups = e->getRequestGroupMan()->getRequestGroups(); pauseRequestGroups(groups.begin(), groups.end(), false, forcePause); - const std::deque<SharedHandle<RequestGroup> >& reservedGroups = + const RequestGroupList& reservedGroups = e->getRequestGroupMan()->getReservedGroups(); pauseRequestGroups(reservedGroups.begin(), reservedGroups.end(), true, forcePause); @@ -540,11 +538,12 @@ SharedHandle<ValueBase> UnpauseRpcMethod::process SharedHandle<ValueBase> UnpauseAllRpcMethod::process (const RpcRequest& req, DownloadEngine* e) { - const std::deque<SharedHandle<RequestGroup> >& groups = + const RequestGroupList& groups = e->getRequestGroupMan()->getReservedGroups(); - std::for_each(groups.begin(), groups.end(), - std::bind2nd(mem_fun_sh(&RequestGroup::setPauseRequested), - false)); + for(RequestGroupList::SeqType::const_iterator i = groups.begin(), + eoi = groups.end(); i != eoi; ++i) { + (*i).second->setPauseRequested(false); + } e->getRequestGroupMan()->requestQueueCheck(); return VLB_OK; } @@ -1038,21 +1037,20 @@ SharedHandle<ValueBase> TellActiveRpcMethod::process std::vector<std::string> keys; toStringList(std::back_inserter(keys), keysParam); SharedHandle<List> list = List::g(); - const std::deque<SharedHandle<RequestGroup> >& groups = - e->getRequestGroupMan()->getRequestGroups(); - for(std::deque<SharedHandle<RequestGroup> >::const_iterator i = - groups.begin(), eoi = groups.end(); i != eoi; ++i) { + const RequestGroupList& groups = e->getRequestGroupMan()->getRequestGroups(); + for(RequestGroupList::SeqType::const_iterator i = groups.begin(), + eoi = groups.end(); i != eoi; ++i) { SharedHandle<Dict> entryDict = Dict::g(); if(requested_key(keys, KEY_STATUS)) { entryDict->put(KEY_STATUS, VLB_ACTIVE); } - gatherProgress(entryDict, *i, e, keys); + gatherProgress(entryDict, (*i).second, e, keys); list->append(entryDict); } return list; } -const std::deque<SharedHandle<RequestGroup> >& +const RequestGroupList& TellWaitingRpcMethod::getItems(DownloadEngine* e) const { return e->getRequestGroupMan()->getReservedGroups(); @@ -1074,7 +1072,7 @@ void TellWaitingRpcMethod::createEntry gatherProgress(entryDict, item, e, keys); } -const std::deque<SharedHandle<DownloadResult> >& +const DownloadResultList& TellStoppedRpcMethod::getItems(DownloadEngine* e) const { return e->getRequestGroupMan()->getDownloadResults(); @@ -1328,13 +1326,13 @@ SharedHandle<ValueBase> ChangePositionRpcMethod::process a2_gid_t gid = str2Gid(gidParam); int pos = posParam->i(); const std::string& howStr = howParam->s(); - RequestGroupMan::HOW how; + A2_HOW how; if(howStr == "POS_SET") { - how = RequestGroupMan::POS_SET; + how = A2_POS_SET; } else if(howStr == "POS_CUR") { - how = RequestGroupMan::POS_CUR; + how = A2_POS_CUR; } else if(howStr == "POS_END") { - how = RequestGroupMan::POS_END; + how = A2_POS_END; } else { throw DL_ABORT_EX("Illegal argument."); } |
