summaryrefslogtreecommitdiff
path: root/src/AdaptiveURISelector.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-02-08 14:17:55 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-02-08 14:17:55 +0000
commit9bb57720cf66992813bc5060c291d950e5590500 (patch)
treebdce241975f52d003281564364cbde09563bf1f3 /src/AdaptiveURISelector.cc
parentb8d177dd5d442b7bf9cc6731828602ca2e3f4ab1 (diff)
2009-02-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten AdaptiveURISelector::mayRetryWithIncreasedTimeout() using RequestGroup::extractURIResult(). * src/AdaptiveURISelector.cc * src/RequestGroup.cc * src/RequestGroup.h * test/RequestGroupTest.cc
Diffstat (limited to 'src/AdaptiveURISelector.cc')
-rw-r--r--src/AdaptiveURISelector.cc21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/AdaptiveURISelector.cc b/src/AdaptiveURISelector.cc
index cb20aad3..c4ff5b04 100644
--- a/src/AdaptiveURISelector.cc
+++ b/src/AdaptiveURISelector.cc
@@ -99,18 +99,17 @@ void AdaptiveURISelector::mayRetryWithIncreasedTimeout
_requestGroup->setTimeout(_requestGroup->getTimeout()*2);
// looking for retries
- const std::deque<URIResult>& uriResults = _requestGroup->getURIResults();
- for (std::deque<URIResult>::const_iterator i = uriResults.begin();
- i != uriResults.end(); ++i) {
- if ((*i).getResult() == DownloadResult::TIME_OUT) {
- _logger->debug("AdaptiveURISelector: will retry server with increased"
- " timeout (%d s): %s",
- _requestGroup->getTimeout(), (*i).getURI().c_str());
- uris.push_back((*i).getURI());
- }
+ std::deque<URIResult> timeouts;
+ _requestGroup->extractURIResult(timeouts, DownloadResult::TIME_OUT);
+ std::transform(timeouts.begin(), timeouts.end(), std::back_inserter(uris),
+ std::mem_fun_ref(&URIResult::getURI));
+
+ for(std::deque<std::string>::const_iterator i = uris.begin(); i != uris.end();
+ ++i) {
+ _logger->debug("AdaptiveURISelector: will retry server with increased"
+ " timeout (%d s): %s",
+ _requestGroup->getTimeout(), (*i).c_str());
}
- std::sort(uris.begin(), uris.end());
- uris.erase(std::unique(uris.begin(), uris.end()), uris.end());
}
std::string AdaptiveURISelector::selectOne(const std::deque<std::string>& uris)