From 38468e64d8d4270a7c355cc3f9be823459ec66eb Mon Sep 17 00:00:00 2001 From: gabi Date: Fri, 10 Oct 2014 02:44:12 +0300 Subject: [PATCH] sinks now parameterized by mutex T --- include/c11log/sinks/console_sinks.h | 47 ---------------------------- include/c11log/sinks/isink.h | 18 +++++++++++ include/c11log/sinks/stdout_sinks.h | 33 +++++++++++++++++++ 3 files changed, 51 insertions(+), 47 deletions(-) delete mode 100644 include/c11log/sinks/console_sinks.h create mode 100644 include/c11log/sinks/isink.h create mode 100644 include/c11log/sinks/stdout_sinks.h diff --git a/include/c11log/sinks/console_sinks.h b/include/c11log/sinks/console_sinks.h deleted file mode 100644 index e0004456..00000000 --- a/include/c11log/sinks/console_sinks.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "base_sink.h" - -namespace c11log -{ -namespace sinks -{ -class console_sink: public base_sink -{ -public: - explicit console_sink(std::ostream& os):_ostream(os) {} - console_sink(const console_sink&) = delete; - console_sink& operator=(const console_sink&) = delete; - virtual ~console_sink() = default; - - -protected: - virtual void _sink_it(const details::log_msg& msg) override - { - std::lock_guard lock(_mutex); - _ostream << msg.formatted; - } - - std::ostream& _ostream; - std::mutex _mutex; -}; - - -inline std::shared_ptr& stdout_sink () -{ - static auto inst = std::make_shared(std::cout); - return inst; -} - -inline std::shared_ptr& stderr_sink () -{ - static auto inst = std::make_shared(std::cerr); - return inst; -} - -} -} diff --git a/include/c11log/sinks/isink.h b/include/c11log/sinks/isink.h new file mode 100644 index 00000000..7468765c --- /dev/null +++ b/include/c11log/sinks/isink.h @@ -0,0 +1,18 @@ +#pragma once + +#include "../details/log_msg.h" + +namespace c11log +{ +namespace sinks +{ +class isink +{ +public: + virtual void log(const details::log_msg& msg) = 0; + virtual void enable(bool enabled) = 0; + virtual bool is_enabled() = 0; +}; +} +} + diff --git a/include/c11log/sinks/stdout_sinks.h b/include/c11log/sinks/stdout_sinks.h new file mode 100644 index 00000000..cdb262cd --- /dev/null +++ b/include/c11log/sinks/stdout_sinks.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include "ostream_sink.h" +#include "../details/null_mutex.h" + +namespace c11log +{ +namespace sinks +{ + +template +class stdout_sink : public ostream_sink +{ +public: + stdout_sink() : ostream_sink(std::cout) {} +}; + +typedef stdout_sink stdout_sink_mt; +typedef stdout_sink stdout_sink_st; + +template +class stderr_sink : public ostream_sink +{ +public: + stderr_sink() : ostream_sink(std::cerr) {} +}; + +typedef stderr_sink stderr_sink_mt; +typedef stderr_sink stderr_sink_st; +} +} \ No newline at end of file