X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Ftimer.hpp;h=cd34124fdfd9a1539f896fd1580482d7e6a78db3;hb=c2c9d14f605d54ec6e7d24551fdfa2ceee7d7258;hp=37da32f1af1e9ad99086da3faae060b54d4673ae;hpb=bce9a74e8addd1085b2e751508bf9ab0c2e84e45;p=awesomized%2Flibmemcached diff --git a/libtest/timer.hpp b/libtest/timer.hpp index 37da32f1..cd34124f 100644 --- a/libtest/timer.hpp +++ b/libtest/timer.hpp @@ -36,8 +36,9 @@ #pragma once +#include #include -#include +#include #ifdef __MACH__ # include @@ -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; } @@ -98,6 +122,9 @@ private: mach_port_deallocate(mach_task_self(), _clock_serv); ts.tv_sec= _mach_timespec.tv_sec; ts.tv_nsec= _mach_timespec.tv_nsec; +#elif defined(_WIN32) + ts.tv_sec= time(NULL); + ts.tv_nsec= 0; #else clock_gettime(CLOCK_REALTIME, &ts); #endif