4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
6 // The contents of this file are subject to the Fraunhofer FOKUS Public License
7 // Version 1.0 (the "License"); you may not use this file except in compliance
8 // with the License. You may obtain a copy of the License at
9 // http://senf.berlios.de/license.html
11 // The Fraunhofer FOKUS Public License Version 1.0 is based on,
12 // but modifies the Mozilla Public License Version 1.1.
13 // See the full license text for the amendments.
15 // Software distributed under the License is distributed on an "AS IS" basis,
16 // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
17 // for the specific language governing rights and limitations under the License.
19 // The Original Code is Fraunhofer FOKUS code.
21 // The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V.
22 // (registered association), Hansastraße 27 c, 80686 Munich, Germany.
23 // All Rights Reserved.
26 // Stefan Bund <g0dil@berlios.de>
29 \brief TimeSource public header */
31 #ifndef HH_SENF_Utils_Logger_TimeSource_
32 #define HH_SENF_Utils_Logger_TimeSource_ 1
35 #include <boost/cstdint.hpp>
37 #include <senf/config.hh>
39 //#include "TimeSource.mpp"
40 //-/////////////////////////////////////////////////////////////////////////////////////////////////
45 typedef config::time_type time_type;
47 /** \brief Log message time source abstract base class
49 Instances derived from TimeSource provide the Logging library with the current date/time
50 value. The \c operator() member must be implemented to return the current universal time
53 A new TimeSource may be installed using \ref senf::log::timeSource().
59 virtual ~TimeSource();
60 virtual time_type operator()() const = 0;
62 static time_type now();
65 /** \brief Default %log message time source
67 This time source is installed by default and uses gettimeofday() (via the Boost.DateTime
68 library) to get the current universal time.
72 struct SystemTimeSource : public TimeSource
74 virtual time_type operator()() const;
77 /** \brief Change %log message time source
79 Set the %log message time source to \a source. The logging library will take ownership of \e
80 source and will take care to free it, if necessary.
82 Since the time source class will in almost all cases be default constructible, see the
83 template overload for a simpler interface.
87 void timeSource(std::auto_ptr<TimeSource> source);
89 /** \brief Change %log message time source
91 Set the %log message time source to (an instance of) \a Source. \a Source must be default
92 constructible, otherwise use the non-template senf::log::timeSource() overload.
96 template <class Source> void timeSource();
100 //-/////////////////////////////////////////////////////////////////////////////////////////////////
101 #include "TimeSource.cci"
102 //#include "TimeSource.ct"
103 #include "TimeSource.cti"
110 // comment-column: 40
111 // c-file-style: "senf"
112 // indent-tabs-mode: nil
113 // ispell-local-dictionary: "american"
114 // compile-command: "scons -u test"