7#include <spdlog/sinks/base_sink.h>
19template<
typename Mutex>
class tui_sink final :
public spdlog::sinks::base_sink<Mutex>
28 : display_queue_(std::move(queue))
37 auto sink_it_(
const spdlog::details::log_msg &msg) ->
void override
39 spdlog::memory_buf_t formatted;
40 spdlog::sinks::base_sink<Mutex>::formatter_->format(msg, formatted);
41 std::string message(formatted.data(), formatted.size());
43 if (not message.empty() and message.back() ==
'\n') { message.pop_back(); }
47 .contact_rdx = std::nullopt,
59 std::shared_ptr<async::async_queue<core::events::display_filter_input_t>> display_queue_;
Thread-safe asynchronous queue for message passing between coroutines.
Custom spdlog sink that routes log messages to a display queue.
tui_sink(std::shared_ptr< async::async_queue< core::events::display_filter_input_t > > queue)
Constructs a TUI sink with the given display queue.
auto sink_it_(const spdlog::details::log_msg &msg) -> void override
Formats and queues a log message.
auto flush_() -> void override
Flushes pending log messages (no-op for queue-based sink).
Request to display a message to the user.
@ system
System messages (always show)
std::string message
Message content to display.