Mercurial > irccd
changeset 837:eeb0bc58cd76
irccd: store filter as simple pointer
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 26 Apr 2019 20:47:08 +0200 |
parents | e7a37a331753 |
children | eda721611955 |
files | libirccd-daemon/irccd/daemon/bot.cpp libirccd-daemon/irccd/daemon/bot.hpp libirccd-daemon/irccd/daemon/logger.cpp libirccd-daemon/irccd/daemon/logger.hpp tests/src/libirccd-daemon/logger/main.cpp |
diffstat | 5 files changed, 11 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd-daemon/irccd/daemon/bot.cpp Thu Apr 25 20:59:32 2019 +0200 +++ b/libirccd-daemon/irccd/daemon/bot.cpp Fri Apr 26 20:47:08 2019 +0200 @@ -177,11 +177,12 @@ if (sc.empty()) return; - sink_->set_filter(std::make_unique<format_filter>( + filter_ = std::make_unique<format_filter>( sc.get("info").get_value(), sc.get("warning").get_value(), sc.get("debug").get_value() - )); + ); + sink_->set_filter(*filter_); } bot::bot(boost::asio::io_service& service, std::string config)
--- a/libirccd-daemon/irccd/daemon/bot.hpp Thu Apr 25 20:59:32 2019 +0200 +++ b/libirccd-daemon/irccd/daemon/bot.hpp Fri Apr 26 20:47:08 2019 +0200 @@ -40,6 +40,7 @@ namespace logger { +class filter; class sink; } // !logger @@ -65,6 +66,7 @@ // Custom logger. std::unique_ptr<logger::sink> sink_; + std::unique_ptr<logger::filter> filter_; // Services. std::unique_ptr<server_service> server_service_;
--- a/libirccd-daemon/irccd/daemon/logger.cpp Thu Apr 25 20:59:32 2019 +0200 +++ b/libirccd-daemon/irccd/daemon/logger.cpp Fri Apr 26 20:47:08 2019 +0200 @@ -186,11 +186,9 @@ verbose_ = mode; } -void sink::set_filter(std::unique_ptr<filter> filter) noexcept +void sink::set_filter(filter& filter) noexcept { - assert(filter); - - filter_ = std::move(filter); + filter_ = &filter; } auto sink::info(std::string_view category, std::string_view component) -> logger
--- a/libirccd-daemon/irccd/daemon/logger.hpp Thu Apr 25 20:59:32 2019 +0200 +++ b/libirccd-daemon/irccd/daemon/logger.hpp Fri Apr 26 20:47:08 2019 +0200 @@ -26,7 +26,6 @@ #include <irccd/sysconfig.hpp> -#include <memory> #include <sstream> #include <string> #include <string_view> @@ -121,7 +120,7 @@ // User options. bool verbose_{false}; - std::unique_ptr<filter> filter_; + filter* filter_{nullptr}; protected: /** @@ -182,10 +181,9 @@ /** * Set an optional filter. * - * \pre filter must not be null * \param filter the filter */ - void set_filter(std::unique_ptr<filter> filter) noexcept; + void set_filter(filter& filter) noexcept; /** * Get the stream for informational messages.
--- a/tests/src/libirccd-daemon/logger/main.cpp Thu Apr 25 20:59:32 2019 +0200 +++ b/tests/src/libirccd-daemon/logger/main.cpp Fri Apr 26 20:47:08 2019 +0200 @@ -83,10 +83,11 @@ class logger_test { public: sample_sink log_; + sample_filter filter_; logger_test() { - log_.set_filter(std::make_unique<sample_filter>()); + log_.set_filter(filter_); log_.set_verbose(true); } };