X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FTarget.hh;h=6f26ddd7a4fda22b5f7a7e990a82fdce79d73e32;hb=7f60122e00a4680d39b199a738160eb8a5dea381;hp=622adf1e5762df4217c2f79af25cde42542504c6;hpb=09a763012dd7b394c8bae6ed720e681273a0e94a;p=senf.git diff --git a/Utils/Logger/Target.hh b/Utils/Logger/Target.hh index 622adf1..6f26ddd 100644 --- a/Utils/Logger/Target.hh +++ b/Utils/Logger/Target.hh @@ -36,6 +36,7 @@ #include "StreamRegistry.hh" #include "../Exception.hh" #include "TimeSource.hh" +#include "../Console/LazyDirectory.hh" //#include "Target.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -55,6 +56,7 @@ namespace log { namespace detail { class TargetRegistry; } namespace detail { class AreaBase; } + namespace detail { struct LogParameters; } /** \brief Logging target base class @@ -160,7 +162,7 @@ namespace log { # endif RoutingEntry(); - bool operator==(RoutingEntry const & other); + bool operator==(RoutingEntry const & other) const; private: RoutingEntry(detail::StreamBase const * stream, detail::AreaBase const * area, @@ -179,12 +181,13 @@ namespace log { public: typedef RIB::const_iterator iterator; ///< Routing table iterator + typedef RIB::size_type size_type; /////////////////////////////////////////////////////////////////////////// ///\name Structors and default members ///@{ - Target(); + explicit Target(std::string const & name); virtual ~Target(); ///@} @@ -332,6 +335,15 @@ namespace log { iterator begin() const; ///< Iterator to beginning of routing table iterator end() const; ///< Iterator past the end of routing table + RoutingEntry const & operator[](size_type i) const; ///< Access routing entry + + size_type size() const; ///< Number of routing table entries + bool empty() const; ///< \c true, if routing table empty, \c false otherwise + + void flush(); ///< Clear routing table + + senf::console::ScopedDirectory<> & consoleDir(); ///< Get console/config directory + private: void route(detail::StreamBase const * stream, detail::AreaBase const * area, unsigned level, action_t action, int index); @@ -343,6 +355,10 @@ namespace log { void write(time_type timestamp, detail::StreamBase const & stream, detail::AreaBase const & area, unsigned level, std::string const & message); + void consoleList(std::ostream & os); + void consoleRoute(int index, detail::LogParameters const & pm, action_t action); + void consoleUnroute(detail::LogParameters const & pm, action_t action); + # ifdef DOXYGEN protected: # endif @@ -374,6 +390,8 @@ namespace log { RIB rib_; + console::LazyDirectory consoleDir_; + friend class detail::AreaBase; friend class detail::TargetRegistry; };