From 7d481d26b98917868d8a77ca4427eea225c56e26 Mon Sep 17 00:00:00 2001 From: "U-DESKTOP-T772REH\\wangyu" Date: Sun, 7 Apr 2019 18:21:30 +0800 Subject: [PATCH] get_current_time_us() never goes back now --- common.cpp | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/common.cpp b/common.cpp index aee87a7..dbb3596 100644 --- a/common.cpp +++ b/common.cpp @@ -430,13 +430,31 @@ int get_sock_errno() #endif +u64_t get_current_time_us() +{ + static u64_t value_fix=0; + static u64_t largest_value=0; + + u64_t raw_value=(u64_t)(ev_time()*1000*1000); + + u64_t fixed_value=raw_value+value_fix; + + if(fixed_value< largest_value) + { + value_fix+= largest_value- fixed_value; + } + else + { + largest_value=fixed_value; + } + + //printf("<%lld,%lld,%lld>\n",raw_value,value_fix,raw_value + value_fix); + return raw_value + value_fix; //new fixed value +} + u64_t get_current_time() { - timespec tmp_time; - clock_gettime(CLOCK_MONOTONIC, &tmp_time); - return ((u64_t)tmp_time.tv_sec)*1000llu+((u64_t)tmp_time.tv_nsec)/(1000*1000llu); - - //return (u64_t)(ev_time()*1000); //todo change to this later + return get_current_time_us()/1000; } u64_t pack_u64(u32_t a,u32_t b)