diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-26 23:43:20 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-26 23:43:20 +0900 |
| commit | 704eebfac6d121602b9257bcc0f8115498eba381 (patch) | |
| tree | d3b9728829b22ee80360e7b90d2e7b31f10674bc /src/UTMetadataRequestTracker.cc | |
| parent | 7f805df4f0f760571a08a41759010f80954976e7 (diff) | |
Use std::remove_if
Diffstat (limited to 'src/UTMetadataRequestTracker.cc')
| -rw-r--r-- | src/UTMetadataRequestTracker.cc | 36 |
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; } |
