OSDN Git Service

libperfmgr: Remove request when returning 0ms
authorWei Wang <wvw@google.com>
Tue, 2 Jan 2018 19:21:11 +0000 (11:21 -0800)
committerWei Wang <wvw@google.com>
Tue, 2 Jan 2018 20:02:48 +0000 (20:02 +0000)
There is a small chance a request expire time is less than 1ms. In this
case, the request will be removed.

Test: libperfmgr_test
Change-Id: Ib8f2f45a9c9a1874417bd2510c73e145b480ce52

libperfmgr/RequestGroup.cc

index 1c7a96a..7f7ddf4 100644 (file)
@@ -47,16 +47,13 @@ bool RequestGroup::GetExpireTime(std::chrono::milliseconds* expire_time) {
 
     bool active = false;
     for (auto it = request_map_.begin(); it != request_map_.end();) {
-        if (it->second <= now) {
+        auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(
+            it->second - now);
+        if (duration <= std::chrono::milliseconds::zero()) {
             it = request_map_.erase(it);
         } else {
+            *expire_time = std::min(duration, *expire_time);
             active = true;
-            auto duration =
-                std::chrono::duration_cast<std::chrono::milliseconds>(
-                    it->second - now);
-            if (duration < *expire_time) {
-                *expire_time = duration;
-            }
             ++it;
         }
     }