1 /* 2 * Copyright Andrey Semashev 2007 - 2015. 3 * Distributed under the Boost Software License, Version 1.0. 4 * (See accompanying file LICENSE_1_0.txt or copy at 5 * http://www.boost.org/LICENSE_1_0.txt) 6 */ 7 /*! 8 * \file time_traits.hpp 9 * \author Andrey Semashev 10 * \date 01.12.2007 11 * 12 * The header contains implementation of time traits that are used in various parts of the 13 * library to acquire current time. 14 */ 15 16 #ifndef BOOST_LOG_ATTRIBUTES_TIME_TRAITS_HPP_INCLUDED_ 17 #define BOOST_LOG_ATTRIBUTES_TIME_TRAITS_HPP_INCLUDED_ 18 19 #include <boost/date_time/posix_time/posix_time_types.hpp> 20 #include <boost/log/detail/config.hpp> 21 #include <boost/log/detail/header.hpp> 22 23 #ifdef BOOST_HAS_PRAGMA_ONCE 24 #pragma once 25 #endif 26 27 namespace boost { 28 29 BOOST_LOG_OPEN_NAMESPACE 30 31 namespace attributes { 32 33 //! Base class for time traits involving Boost.DateTime. 34 struct basic_time_traits 35 { 36 //! Time type 37 typedef posix_time::ptime time_type; 38 39 //! Current time source 40 #if defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK) 41 typedef posix_time::microsec_clock clock_source; 42 #else 43 typedef posix_time::second_clock clock_source; 44 #endif // defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK) 45 }; 46 47 //! Time traits that describes UTC time acquirement via Boost.DateTime facilities 48 struct utc_time_traits : 49 public basic_time_traits 50 { 51 /*! 52 * \return Current time stamp 53 */ get_clockboost::attributes::utc_time_traits54 static time_type get_clock() 55 { 56 return clock_source::universal_time(); 57 } 58 }; 59 60 //! Time traits that describes local time acquirement via Boost.DateTime facilities 61 struct local_time_traits : 62 public basic_time_traits 63 { 64 /*! 65 * \return Current time stamp 66 */ get_clockboost::attributes::local_time_traits67 static time_type get_clock() 68 { 69 return clock_source::local_time(); 70 } 71 }; 72 73 } // namespace attributes 74 75 BOOST_LOG_CLOSE_NAMESPACE // namespace log 76 77 } // namespace boost 78 79 #include <boost/log/detail/footer.hpp> 80 81 #endif // BOOST_LOG_ATTRIBUTES_TIME_TRAITS_HPP_INCLUDED_ 82