X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FTarget.hh;h=74110c936512b92f001b67239bc111d0d005db25;hb=2246ca853064965a7b263c49597c4e74397b989b;hp=02226ca8901fee320d907e72b9b02b9aed20e503;hpb=012a592d56be453719b7fbba492b56ae804c048f;p=senf.git diff --git a/Utils/Logger/Target.hh b/Utils/Logger/Target.hh index 02226ca..74110c9 100644 --- a/Utils/Logger/Target.hh +++ b/Utils/Logger/Target.hh @@ -1,8 +1,8 @@ // $Id$ // // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -51,8 +51,8 @@ namespace senf { namespace log { - - class TargetRegistry; + + namespace detail { class TargetRegistry; } /** \brief Logging target base class @@ -119,9 +119,6 @@ namespace log { cases messages might be lost but this cannot be avoided. \see \ref targets - - \fixme optionally Integrate with Scheduler / ClockService to reduce number of gettimeofday() - calls. */ class Target : private boost::noncopyable { @@ -399,8 +396,58 @@ namespace log { RIB rib_; friend class detail::AreaBase; + friend class detail::TargetRegistry; + }; + + /** \brief Log message time source abstract base class + + Instances derived from TimeSource provide the Logging library with the current date/time + value. The \c operator() member must be implemented to return the current universal time + (UTC). + + A new TimeSource may be installed using \ref senf::log::timeSource(). + + \ingroup config + */ + struct TimeSource + { + virtual ~TimeSource(); + virtual boost::posix_time::ptime operator()() const = 0; + }; + + /** \brief Default log message time source + + This time source is installed by default and uses gettimeofday() (via the Boost.DateTime + library) to get the current universal time. + + \ingroup config + */ + struct SystemTimeSource : public TimeSource + { + virtual boost::posix_time::ptime operator()() const; }; + /** \brief Change log message time source + + Set the log message time source to \a source. The logging library will take ownership of \e + source and will take care to free it, if necessary. + + Since the time source class will in almost all cases be default constructible, see the + template overload for a simpler interface. + + \ingroup config + */ + void timeSource(std::auto_ptr source); + + /** \brief Change log message time source + + Set the log message time source to (an instance of) \a Source. \a Source must be default + constructible, otherwise use the non-template senf::log::timeSource() overload. + + \ingroup config + */ + template void timeSource(); + }} ///////////////////////////////hh.e////////////////////////////////////////