xref: /aosp_15_r20/external/gmmlib/Source/GmmLib/Utility/GmmLog/spdlog/sinks/sink.h (revision 35ffd701415c9e32e53136d61a677a8d0a8fc4a5)
1 //
2 // Copyright(c) 2015 Gabi Melman.
3 // Distributed under the MIT License (http://opensource.org/licenses/MIT)
4 //
5 
6 
7 #pragma once
8 
9 #include <spdlog/details/log_msg.h>
10 
11 namespace spdlog
12 {
13 namespace sinks
14 {
15 class sink
16 {
17 public:
sink()18     sink(): _level( level::trace ) {}
19 
~sink()20     virtual ~sink() {}
21     virtual void log(const details::log_msg& msg) = 0;
22     virtual void flush() = 0;
23 
24     bool should_log(level::level_enum msg_level) const;
25     void set_level(level::level_enum log_level);
26     level::level_enum level() const;
27 
28 private:
29     level_t _level;
30 
31 };
32 
should_log(level::level_enum msg_level)33 inline bool sink::should_log(level::level_enum msg_level) const
34 {
35     return msg_level >= _level.load(std::memory_order_relaxed);
36 }
37 
set_level(level::level_enum log_level)38 inline void sink::set_level(level::level_enum log_level)
39 {
40     _level.store(log_level);
41 }
42 
level()43 inline level::level_enum sink::level() const
44 {
45     return static_cast<spdlog::level::level_enum>(_level.load(std::memory_order_relaxed));
46 }
47 
48 }
49 }
50 
51