Utils/Logger: Implement TimeSource facility
[senf.git] / Utils / Logger / Target.cci
index e7b2409..da1ee4e 100644 (file)
@@ -94,6 +94,25 @@ prefix_ senf::log::Target::action_t senf::log::Target::RoutingEntry::action()
 ///////////////////////////////////////////////////////////////////////////
 // senf::log::detail::TargetRegistry
 
+prefix_ void senf::log::detail::TargetRegistry::write(StreamBase const & stream,
+                                                      AreaBase const & area, unsigned level,
+                                                      std::string msg)
+{
+    area.write((*timeSource_)(), stream, level, msg);
+}
+
+prefix_ void senf::log::detail::TargetRegistry::timeSource(std::auto_ptr<TimeSource> source)
+{
+    timeSource_.reset(source.release());
+}
+
+////////////////////////////////////////
+// private members
+
+prefix_ senf::log::detail::TargetRegistry::TargetRegistry()
+    : timeSource_(new SystemTimeSource())
+{}
+
 prefix_ void senf::log::detail::TargetRegistry::registerTarget(Target * target)
 {
     targets_.insert(target);
@@ -104,6 +123,14 @@ prefix_ void senf::log::detail::TargetRegistry::unregisterTarget(Target * target
     targets_.erase(target);
 }
 
+///////////////////////////////////////////////////////////////////////////
+// namespace senf::log members
+
+prefix_ void senf::log::timeSource(std::auto_ptr<TimeSource> source)
+{
+    detail::TargetRegistry::instance().timeSource(source);
+}
+
 /////////////////////////////cci.e///////////////////////////////////////
 #undef prefix_