X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Ftimer.hpp;h=18ed3e8ebaf5e02061f9c612ae762fed3d3fe09c;hb=701592b9754d2ace633882791c755826e3a8af68;hp=37da32f1af1e9ad99086da3faae060b54d4673ae;hpb=1be0350e7ae7a566896a9fe52863dcc22433fc8a;p=awesomized%2Flibmemcached diff --git a/libtest/timer.hpp b/libtest/timer.hpp index 37da32f1..18ed3e8e 100644 --- a/libtest/timer.hpp +++ b/libtest/timer.hpp @@ -36,15 +36,9 @@ #pragma once +#include #include -#include - -#ifdef __MACH__ -# include -# include -#else -# include -#endif +#include namespace libtest { @@ -52,56 +46,22 @@ namespace libtest { class Timer { public: - Timer() - { - _begin.tv_sec= 0; - _begin.tv_nsec= 0; - _end.tv_sec= 0; - _end.tv_nsec= 0; - } - - void reset() - { - _end.tv_sec= 0; - _end.tv_nsec= 0; - _time(_begin); - } - - void sample() - { - _time(_end); - } - - 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_nsec= 1000000000 +_end.tv_nsec -_begin.tv_nsec; - - } - else - { - arg.tv_sec= _end.tv_sec -_begin.tv_sec; - arg.tv_nsec= _end.tv_nsec -_begin.tv_nsec; - } - } + Timer(); + + void reset(); + + void sample(); + + void offset(int64_t minutes_arg, int64_t seconds_arg, int64_t nanoseconds); + + int64_t minutes(); + + uint64_t elapsed_milliseconds() const; + + void difference(struct timespec& arg) const; private: - void _time(struct timespec& ts) - { -#ifdef __MACH__ // OSX lacks clock_gettime() - clock_serv_t _clock_serv; - mach_timespec_t _mach_timespec; - host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &_clock_serv); - clock_get_time(_clock_serv, &_mach_timespec); - mach_port_deallocate(mach_task_self(), _clock_serv); - ts.tv_sec= _mach_timespec.tv_sec; - ts.tv_nsec= _mach_timespec.tv_nsec; -#else - clock_gettime(CLOCK_REALTIME, &ts); -#endif - } + void _time(struct timespec& ts); private: struct timespec _begin;