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);
 	}
 };