summaryrefslogtreecommitdiff
path: root/src/UTMetadataRequestTracker.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-26 23:43:20 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-26 23:43:20 +0900
commit704eebfac6d121602b9257bcc0f8115498eba381 (patch)
treed3b9728829b22ee80360e7b90d2e7b31f10674bc /src/UTMetadataRequestTracker.cc
parent7f805df4f0f760571a08a41759010f80954976e7 (diff)
Use std::remove_if
Diffstat (limited to 'src/UTMetadataRequestTracker.cc')
-rw-r--r--src/UTMetadataRequestTracker.cc36
1 files changed, 24 insertions, 12 deletions
diff --git a/src/UTMetadataRequestTracker.cc b/src/UTMetadataRequestTracker.cc
index d04887dc..4672581f 100644
--- a/src/UTMetadataRequestTracker.cc
+++ b/src/UTMetadataRequestTracker.cc
@@ -65,22 +65,34 @@ void UTMetadataRequestTracker::remove(size_t index)
}
}
-std::vector<size_t> UTMetadataRequestTracker::removeTimeoutEntry()
-{
- std::vector<size_t> indexes;
- const time_t TIMEOUT = 20;
- for(std::vector<RequestEntry>::iterator i = trackedRequests_.begin(),
- eoi = trackedRequests_.end(); i != eoi;) {
- if((*i).elapsed(TIMEOUT)) {
+namespace {
+struct RemoveTimeoutEntry {
+ RemoveTimeoutEntry(std::vector<size_t>& indexes)
+ : indexes(indexes)
+ {}
+ bool operator()(const UTMetadataRequestTracker::RequestEntry& ent) const
+ {
+ if(ent.elapsed(TIMEOUT)) {
A2_LOG_DEBUG(fmt("ut_metadata request timeout. index=%lu",
- static_cast<unsigned long>((*i).index_)));
- indexes.push_back((*i).index_);
- i = trackedRequests_.erase(i);
- eoi = trackedRequests_.end();
+ static_cast<unsigned long>(ent.index_)));
+ indexes.push_back(ent.index_);
+ return true;
} else {
- ++i;
+ return false;
}
}
+ std::vector<size_t>& indexes;
+ static const time_t TIMEOUT = 20;
+};
+} // namespace
+
+std::vector<size_t> UTMetadataRequestTracker::removeTimeoutEntry()
+{
+ std::vector<size_t> indexes;
+ trackedRequests_.erase(std::remove_if(trackedRequests_.begin(),
+ trackedRequests_.end(),
+ RemoveTimeoutEntry(indexes)),
+ trackedRequests_.end());
return indexes;
}