|
Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
|
Abstract base class for queue-based log writers. More...
#include <queued_writer_base.h>


Public Member Functions | |
| queued_writer_base (std::unique_ptr< log_writer_interface > wrapped_writer, std::size_t max_queue_size, std::string_view decorator_name) | |
| Constructor for queued writer base. | |
| ~queued_writer_base () override=default | |
| Virtual destructor. | |
| bool | is_healthy () const override |
| Check if the writer is healthy. | |
| std::size_t | get_queue_size () const |
| Get the current queue size. | |
| std::size_t | get_max_queue_size () const |
| Get maximum queue size. | |
Public Member Functions inherited from kcenon::logger::decorator_writer_base | |
| decorator_writer_base (std::unique_ptr< log_writer_interface > wrapped, std::string_view decorator_name) | |
| Construct a decorator writer base. | |
| ~decorator_writer_base () override=default | |
| Virtual destructor for proper cleanup. | |
| decorator_writer_base (const decorator_writer_base &)=delete | |
| decorator_writer_base & | operator= (const decorator_writer_base &)=delete |
| decorator_writer_base (decorator_writer_base &&) noexcept=default | |
| decorator_writer_base & | operator= (decorator_writer_base &&) noexcept=default |
| common::VoidResult | write (const log_entry &entry) override=0 |
| Write a log entry (must be implemented by derived classes) | |
| common::VoidResult | flush () override |
| Flush the wrapped writer. | |
| std::string | get_name () const override |
| Get the name of this writer. | |
| const log_writer_interface * | get_wrapped_writer () const noexcept |
| Get the wrapped writer (const version) | |
Public Member Functions inherited from kcenon::logger::log_writer_interface | |
| virtual | ~log_writer_interface ()=default |
| virtual common::VoidResult | close () |
| Close the writer and release resources. | |
| virtual auto | is_open () const -> bool |
| Check if writer is open and ready. | |
Protected Member Functions | |
| common::VoidResult | try_enqueue (const log_entry &entry) |
| Try to enqueue an entry with overflow protection. | |
| virtual common::VoidResult | handle_overflow (const log_entry &) |
| Handle queue overflow condition. | |
| virtual void | on_entry_enqueued () |
| Called after an entry is successfully enqueued. | |
Protected Member Functions inherited from kcenon::logger::decorator_writer_base | |
| log_writer_interface & | wrapped () noexcept |
| Access the wrapped writer (non-const) | |
| const log_writer_interface & | wrapped () const noexcept |
| Access the wrapped writer (const) | |
| const std::string & | decorator_name () const noexcept |
| Get the decorator name. | |
Static Protected Member Functions | |
| template<typename T > | |
| static std::size_t | get_container_size (const std::queue< T > &container) |
| Get container size (specialization for std::queue) | |
| template<typename T > | |
| static std::size_t | get_container_size (const std::vector< T > &container) |
| Get container size (specialization for std::vector) | |
| template<typename T > | |
| static void | enqueue_entry (std::queue< T > &container, const log_entry &entry) |
| Enqueue entry (specialization for std::queue) | |
| template<typename T > | |
| static void | enqueue_entry (std::vector< T > &container, const log_entry &entry) |
| Enqueue entry (specialization for std::vector) | |
Protected Attributes | |
| std::size_t | max_queue_size_ |
| std::mutex | queue_mutex_ |
| Container | queue_ |
| std::atomic< bool > | shutting_down_ |
Additional Inherited Members | |
Static Public Attributes inherited from kcenon::logger::decorator_writer_tag | |
| static constexpr writer_category | category = writer_category::decorator |
Static Public Attributes inherited from kcenon::logger::async_writer_tag | |
| static constexpr writer_category | category = writer_category::asynchronous |
Abstract base class for queue-based log writers.
This template provides common functionality for writers that accumulate log entries in a queue before processing. Derived classes must implement the queue processing strategy (immediate async vs batched).
Template Parameter:
Category: Asynchronous (non-blocking), Decorator (wraps another writer)
Definition at line 61 of file queued_writer_base.h.
|
inlineexplicit |
Constructor for queued writer base.
| wrapped_writer | The underlying writer to delegate writes to |
| max_queue_size | Maximum number of entries in the queue |
| decorator_name | Name of the decorator (e.g., "async", "batch") |
| std::invalid_argument | if wrapped_writer is null |
Definition at line 70 of file queued_writer_base.h.
|
overridedefault |
Virtual destructor.
|
inlinestaticprotected |
Enqueue entry (specialization for std::queue)
Definition at line 162 of file queued_writer_base.h.
References kcenon::logger::copy_log_entry().
Referenced by kcenon::logger::queued_writer_base< Container >::try_enqueue().


|
inlinestaticprotected |
Enqueue entry (specialization for std::vector)
Definition at line 170 of file queued_writer_base.h.
References kcenon::logger::copy_log_entry().

|
inlinestaticprotected |
Get container size (specialization for std::queue)
Definition at line 146 of file queued_writer_base.h.
Referenced by kcenon::logger::queued_writer_base< Container >::get_queue_size(), and kcenon::logger::queued_writer_base< Container >::try_enqueue().

|
inlinestaticprotected |
Get container size (specialization for std::vector)
Definition at line 154 of file queued_writer_base.h.
|
inline |
Get maximum queue size.
Definition at line 104 of file queued_writer_base.h.
References kcenon::logger::queued_writer_base< Container >::max_queue_size_.
|
inline |
Get the current queue size.
Definition at line 95 of file queued_writer_base.h.
References kcenon::logger::queued_writer_base< Container >::get_container_size(), kcenon::logger::queued_writer_base< Container >::queue_, and kcenon::logger::queued_writer_base< Container >::queue_mutex_.

|
inlineprotectedvirtual |
Handle queue overflow condition.
| entry | The entry that couldn't be enqueued |
Reimplemented in kcenon::logger::async_writer.
Definition at line 132 of file queued_writer_base.h.
References kcenon::logger::make_logger_void_result(), and kcenon::logger::queue_full.
Referenced by kcenon::logger::queued_writer_base< Container >::try_enqueue().


|
inlineoverridevirtual |
Check if the writer is healthy.
Reimplemented from kcenon::logger::decorator_writer_base.
Definition at line 87 of file queued_writer_base.h.
References kcenon::logger::log_writer_interface::is_healthy(), kcenon::logger::queued_writer_base< Container >::shutting_down_, and kcenon::logger::decorator_writer_base::wrapped().

|
inlineprotectedvirtual |
Called after an entry is successfully enqueued.
Reimplemented in kcenon::logger::async_writer.
Definition at line 140 of file queued_writer_base.h.
Referenced by kcenon::logger::queued_writer_base< Container >::try_enqueue().

|
inlineprotected |
Try to enqueue an entry with overflow protection.
| entry | The log entry to enqueue |
Definition at line 114 of file queued_writer_base.h.
References kcenon::logger::queued_writer_base< Container >::enqueue_entry(), kcenon::logger::queued_writer_base< Container >::get_container_size(), kcenon::logger::queued_writer_base< Container >::handle_overflow(), kcenon::logger::queued_writer_base< Container >::max_queue_size_, kcenon::common::ok(), kcenon::logger::queued_writer_base< Container >::on_entry_enqueued(), kcenon::logger::queued_writer_base< Container >::queue_, and kcenon::logger::queued_writer_base< Container >::queue_mutex_.

|
protected |
Definition at line 174 of file queued_writer_base.h.
Referenced by kcenon::logger::queued_writer_base< Container >::get_max_queue_size(), and kcenon::logger::queued_writer_base< Container >::try_enqueue().
|
protected |
Definition at line 177 of file queued_writer_base.h.
Referenced by kcenon::logger::queued_writer_base< Container >::get_queue_size(), and kcenon::logger::queued_writer_base< Container >::try_enqueue().
|
mutableprotected |
Definition at line 176 of file queued_writer_base.h.
Referenced by kcenon::logger::queued_writer_base< Container >::get_queue_size(), and kcenon::logger::queued_writer_base< Container >::try_enqueue().
|
protected |
Definition at line 179 of file queued_writer_base.h.
Referenced by kcenon::logger::queued_writer_base< Container >::is_healthy().