From 6074dc3a50bdd2d45af42e8dddf24ce0f35ca335 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 | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/common.cpp b/common.cpp index 6102a72..b73b866 100644 --- a/common.cpp +++ b/common.cpp @@ -478,12 +478,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); + return get_current_time_us()/1000; } u64_t pack_u64(u32_t a,u32_t b)