inline struct timespec get_timespec(boost::system_time const& abs_time) { struct timespec timeout={0}; boost::posix_time::time_duration const time_since_epoch=abs_time-boost::posix_time::from_time_t(0); timeout.tv_sec=time_since_epoch.total_seconds(); timeout.tv_nsec=time_since_epoch.fractional_seconds()*(1000000000/time_since_epoch.ticks_per_second()); return timeout; }
platform_duration(boost::posix_time::time_duration const& rel_time) { #if defined BOOST_THREAD_CHRONO_POSIX_API || defined BOOST_THREAD_CHRONO_MAC_API ts_val.tv_sec = rel_time.total_seconds(); ts_val.tv_nsec = static_cast<long>(rel_time.fractional_seconds() * (1000000000l / rel_time.ticks_per_second())); #else ns_val = static_cast<boost::time_max_t>(rel_time.total_seconds()) * 1000000000l; ns_val += rel_time.fractional_seconds() * (1000000000l / rel_time.ticks_per_second()); #endif }
inline xtime get_xtime(boost::system_time const& abs_time) { xtime res={0}; boost::posix_time::time_duration const time_since_epoch=abs_time-boost::posix_time::from_time_t(0); res.sec=static_cast<xtime::xtime_sec_t>(time_since_epoch.total_seconds()); res.nsec=static_cast<xtime::xtime_nsec_t>(time_since_epoch.fractional_seconds()*(1000000000/time_since_epoch.ticks_per_second())); return res; }