diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-26 22:59:28 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-26 22:59:28 +0900 |
| commit | 7f805df4f0f760571a08a41759010f80954976e7 (patch) | |
| tree | 0fbc09487b536755d030be1afd33c7451cedbd18 /src/DHTMessageTracker.cc | |
| parent | 4ac4fdf1e9491151ccc5f892ac69899b77ede605 (diff) | |
Use std::remove_if
Diffstat (limited to 'src/DHTMessageTracker.cc')
| -rw-r--r-- | src/DHTMessageTracker.cc | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/DHTMessageTracker.cc b/src/DHTMessageTracker.cc index ec728a77..06baf50e 100644 --- a/src/DHTMessageTracker.cc +++ b/src/DHTMessageTracker.cc @@ -135,19 +135,29 @@ void DHTMessageTracker::handleTimeoutEntry } } -void DHTMessageTracker::handleTimeout() -{ - for(std::deque<SharedHandle<DHTMessageTrackerEntry> >::iterator i = - entries_.begin(), eoi = entries_.end(); i != eoi;) { - if((*i)->isTimeout()) { - SharedHandle<DHTMessageTrackerEntry> entry = *i; - i = entries_.erase(i); - eoi = entries_.end(); - handleTimeoutEntry(entry); +namespace { +struct HandleTimeout { + HandleTimeout(DHTMessageTracker* tracker) + : tracker(tracker) + {} + bool operator()(const SharedHandle<DHTMessageTrackerEntry>& ent) const + { + if(ent->isTimeout()) { + tracker->handleTimeoutEntry(ent); + return true; } else { - ++i; + return false; } } + DHTMessageTracker* tracker; +}; +} // namespace + +void DHTMessageTracker::handleTimeout() +{ + entries_.erase(std::remove_if(entries_.begin(), entries_.end(), + HandleTimeout(this)), + entries_.end()); } SharedHandle<DHTMessageTrackerEntry> |
