Merge up to gearmand.
[m6w6/libmemcached] / libtest / timer.hpp
index 37da32f1af1e9ad99086da3faae060b54d4673ae..28ec47416766c3eb917447d527a57ef1e0e47e97 100644 (file)
@@ -36,8 +36,9 @@
 
 #pragma once
 
+#include <cstdlib>
 #include <ctime>
-#include <ostream>
+#include <iostream>
 
 #ifdef __MACH__
 #  include <mach/clock.h>
@@ -72,11 +73,34 @@ public:
     _time(_end);
   }
 
+  void offset(int64_t minutes_arg, int64_t seconds_arg, int64_t nanoseconds)
+  {
+    reset();
+    _end= _begin;
+    _end.tv_sec+= (minutes_arg * 60) +seconds_arg;
+    _end.tv_nsec+= nanoseconds;
+  }
+
+  int64_t minutes()
+  {
+    struct timespec result;
+    difference(result);
+    return int64_t(result.tv_sec / 60);
+  }
+
+  uint64_t elapsed_milliseconds() const
+  {
+    struct timespec temp;
+    difference(temp);
+
+    return temp.tv_sec*1000 +temp.tv_nsec/1000000;
+  }
+
   void difference(struct timespec& arg) const
   {
     if ((_end.tv_nsec -_begin.tv_nsec) < 0)
     {
-      arg.tv_sec= _end.tv_sec -_begin.tv_sec-1;
+      arg.tv_sec= _end.tv_sec -_begin.tv_sec -1;
       arg.tv_nsec= 1000000000 +_end.tv_nsec -_begin.tv_nsec;
 
     }