diff options
Diffstat (limited to 'ACE/TAO/orbsvcs/orbsvcs/Time_Utilities.inl')
-rw-r--r-- | ACE/TAO/orbsvcs/orbsvcs/Time_Utilities.inl | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/ACE/TAO/orbsvcs/orbsvcs/Time_Utilities.inl b/ACE/TAO/orbsvcs/orbsvcs/Time_Utilities.inl new file mode 100644 index 00000000000..403e98b3224 --- /dev/null +++ b/ACE/TAO/orbsvcs/orbsvcs/Time_Utilities.inl @@ -0,0 +1,119 @@ +// -*- C++ -*- +// +// $Id$ + +#include "ace/Time_Value.h" + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +ACE_INLINE TimeBase::TimeT +ORBSVCS_Time::zero () +{ + return 0; +} + +ACE_INLINE void +ORBSVCS_Time::TimeT_to_hrtime (ACE_hrtime_t &lhs, + const TimeBase::TimeT& rhs) +{ + lhs = rhs; + lhs *= 100; +} + +ACE_INLINE void +ORBSVCS_Time::hrtime_to_TimeT (TimeBase::TimeT& lhs, + ACE_hrtime_t rhs) +{ + ACE_UINT64 t = rhs / 100; // convert to 100ns + lhs = t; +} + +ACE_INLINE ACE_hrtime_t +ORBSVCS_Time::to_hrtime (const TimeBase::TimeT& t) +{ + ACE_hrtime_t r; + ORBSVCS_Time::TimeT_to_hrtime (r, t); + return r; +} + +ACE_INLINE void +ORBSVCS_Time::Time_Value_to_TimeT (TimeBase::TimeT& lhs, + const ACE_Time_Value& rhs) +{ + ACE_hrtime_t t = + static_cast<ACE_hrtime_t> (rhs.sec ()) * ACE_U_ONE_SECOND_IN_NSECS + + static_cast<ACE_hrtime_t> (rhs.usec ()) * 1000u; + + ORBSVCS_Time::hrtime_to_TimeT (lhs, t); +} + +ACE_INLINE void +ORBSVCS_Time::TimeT_to_Time_Value (ACE_Time_Value& lhs, + const TimeBase::TimeT& rhs) +{ + ACE_hrtime_t t; + + ORBSVCS_Time::TimeT_to_hrtime (t, rhs); + + lhs.set (static_cast<ACE_UINT32> (t / ACE_U_ONE_SECOND_IN_NSECS), + static_cast<ACE_UINT32> ((t % ACE_U_ONE_SECOND_IN_NSECS) / 1000)); +} + +ACE_INLINE ACE_Time_Value +ORBSVCS_Time::to_Time_Value (const TimeBase::TimeT& t) +{ + ACE_Time_Value r; + ORBSVCS_Time::TimeT_to_Time_Value (r, t); + return r; +} + +ACE_INLINE TimeBase::TimeT +ORBSVCS_Time::to_TimeT (const ACE_Time_Value& t) +{ + TimeBase::TimeT r; + ORBSVCS_Time::Time_Value_to_TimeT (r, t); + return r; +} + +ACE_INLINE void +ORBSVCS_Time::Absolute_Time_Value_to_TimeT (TimeBase::TimeT& lhs, + const ACE_Time_Value& rhs) +{ + ACE_hrtime_t t = + static_cast<ACE_hrtime_t> (rhs.sec ()) * ACE_U_ONE_SECOND_IN_NSECS + + static_cast<ACE_hrtime_t> (rhs.usec ()) * 1000u; + + t += Time_Base_Offset; + ORBSVCS_Time::hrtime_to_TimeT (lhs, t); +} + +ACE_INLINE void +ORBSVCS_Time::Absolute_TimeT_to_Time_Value (ACE_Time_Value& lhs, + const TimeBase::TimeT& rhs) +{ + ACE_hrtime_t t; + + ORBSVCS_Time::TimeT_to_hrtime (t, rhs); + t -= Time_Base_Offset; + + lhs.set(static_cast<ACE_UINT32> (t / ACE_U_ONE_SECOND_IN_NSECS), + static_cast<ACE_UINT32> ((t % ACE_U_ONE_SECOND_IN_NSECS) / 1000)); +} + +ACE_INLINE ACE_Time_Value +ORBSVCS_Time::to_Absolute_Time_Value (const TimeBase::TimeT& t) +{ + ACE_Time_Value r; + ORBSVCS_Time::Absolute_TimeT_to_Time_Value (r, t); + return r; +} + +ACE_INLINE TimeBase::TimeT +ORBSVCS_Time::to_Absolute_TimeT (const ACE_Time_Value& t) +{ + TimeBase::TimeT r; + ORBSVCS_Time::Absolute_Time_Value_to_TimeT (r, t); + return r; +} + +TAO_END_VERSIONED_NAMESPACE_DECL |