X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FClockService.cci;h=791a403f63c5e2e9d6decae715abfbd2abcc58f2;hb=81f84badf27b66dbadec9890646ca1193e998505;hp=c24b736c365e6bc37c22df90a4226189d3b89458;hpb=c6811d4b2fdd60eb33af627ae287dd228f435d14;p=senf.git diff --git a/Scheduler/ClockService.cci b/Scheduler/ClockService.cci index c24b736..791a403 100644 --- a/Scheduler/ClockService.cci +++ b/Scheduler/ClockService.cci @@ -47,6 +47,8 @@ prefix_ senf::ClockService::clock_type senf::ClockService::now() prefix_ senf::ClockService::clock_type senf::ClockService::clock_m(abstime_type time) { + if (now() - baseClock_ > 1000000000ll) + restart_m(); boost::posix_time::time_duration delta (time - baseAbstime_); return baseClock_ + clock_type( delta.ticks() ) * clock_type( 1000000000UL / boost::posix_time::time_duration::ticks_per_second() ); @@ -54,6 +56,8 @@ prefix_ senf::ClockService::clock_type senf::ClockService::clock_m(abstime_type prefix_ senf::ClockService::abstime_type senf::ClockService::abstime_m(clock_type clock) { + if (now() - baseClock_ > 1000000000ll) + restart_m(); #ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG return baseAbstime_ + boost::posix_time::nanoseconds(clock-baseClock_); #else @@ -79,6 +83,15 @@ prefix_ senf::ClockService::abstime_type senf::ClockService::abstime(clock_type return instance().abstime_m(clock); } +prefix_ senf::ClockService::reltime_type senf::ClockService::reltime(clock_type clock) +{ +#ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG + return boost::posix_time::nanoseconds(clock); +#else + return boost::posix_time::microseconds((clock+500)/1000); +#endif +} + prefix_ senf::ClockService::clock_type senf::ClockService::clock(abstime_type time) { return instance().clock_m(time);