diff --git a/Scheduler/ClockService.cci b/Scheduler/ClockService.cci index 3c159550b094320a4805245e9c5b1c29d48d0355..791a403f63c5e2e9d6decae715abfbd2abcc58f2 100644 --- a/Scheduler/ClockService.cci +++ b/Scheduler/ClockService.cci @@ -83,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); diff --git a/Scheduler/ClockService.hh b/Scheduler/ClockService.hh index 02082ea057fcd0514a17854c7134eced102b9d26..6067cec322114c565e16421eea6a634d442c1dc1 100644 --- a/Scheduler/ClockService.hh +++ b/Scheduler/ClockService.hh @@ -86,6 +86,12 @@ namespace senf { */ typedef boost::posix_time::ptime abstime_type; + /** \brief Relative time data type + + Boost.DateTime datatype used to represent time intervals + */ + typedef boost::posix_time::time_duration reltime_type; + /////////////////////////////////////////////////////////////////////////// static clock_type now(); ///< Return current clock value @@ -98,6 +104,12 @@ namespace senf { monotonous, absolute time may be non-monotonous if the system date/time is changed. */ + static reltime_type reltime(clock_type clock); ///< Convert clock to relative time + /**< This member converts a clock value into a relative + Boost.DateTime time interval + \note The resolution of reltime_type might be smaller + than the clock_type resolution */ + static clock_type clock(abstime_type time); ///< Convert absolute time to clock value /**< This member converst an absolute time value into the corresponding clock value.