diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-05-17 22:56:21 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-05-17 22:56:21 +0900 |
| commit | 06377d77c9a7bf2237f1bfcd5bf79e209b0e2247 (patch) | |
| tree | 3e1b62169574749f50039c4a75450da9c0cb421e /src/aria2api.cc | |
| parent | 13e064e4e16aeae9479e1002c3e3fa1ba2cf303c (diff) | |
Add changeGlobalOption, getGlobalOption, getGlobalOptions API
Diffstat (limited to 'src/aria2api.cc')
| -rw-r--r-- | src/aria2api.cc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/aria2api.cc b/src/aria2api.cc index 069bb12a..c7504941 100644 --- a/src/aria2api.cc +++ b/src/aria2api.cc @@ -247,6 +247,17 @@ void apiGatherChangeableOptionForReserved } // namespace namespace { +void apiGatherChangeableGlobalOption +(Option* option, const KeyVals& options, + const SharedHandle<OptionParser>& optionParser) +{ + apiGatherOption(options.begin(), options.end(), + std::mem_fun(&OptionHandler::getChangeGlobalOption), + option, optionParser); +} +} // namespace + +namespace { void addRequestGroup(const SharedHandle<RequestGroup>& group, const SharedHandle<DownloadEngine>& e, int position) @@ -466,6 +477,45 @@ int changeOption(Session* session, const A2Gid& gid, const KeyVals& options) } } +const std::string& getGlobalOption(Session* session, const std::string& name) +{ + const SharedHandle<DownloadEngine>& e = + session->context->reqinfo->getDownloadEngine(); + return e->getOption()->get(option::k2p(name)); +} + +KeyVals getGlobalOptions(Session* session) +{ + const SharedHandle<DownloadEngine>& e = + session->context->reqinfo->getDownloadEngine(); + const SharedHandle<OptionParser>& optionParser = OptionParser::getInstance(); + const Option* option = e->getOption(); + KeyVals options; + for(size_t i = 1, len = option::countOption(); i < len; ++i) { + const Pref* pref = option::i2p(i); + if(option->defined(pref) && optionParser->find(pref)) { + options.push_back(KeyVals::value_type(pref->k, option->get(pref))); + } + } + return options; +} + +int changeGlobalOption(Session* session, const KeyVals& options) +{ + const SharedHandle<DownloadEngine>& e = + session->context->reqinfo->getDownloadEngine(); + Option option; + try { + apiGatherChangeableGlobalOption(&option, options, + OptionParser::getInstance()); + } catch(RecoverableException& err) { + A2_LOG_INFO_EX(EX_EXCEPTION_CAUGHT, err); + return -1; + } + changeGlobalOption(option, e.get()); + return 0; +} + std::vector<A2Gid> getActiveDownload(Session* session) { const SharedHandle<DownloadEngine>& e = |
