MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
Sink.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "JournalEntry.hpp"
4#include "RealtimeEntry.hpp"
5
6namespace MayaFlux::Journal {
7
8/**
9 * @class LogSink
10 * @brief Abstract interface for log output destinations
11 *
12 * Allows pluggable log outputs (console, file, network, etc.)
13 */
14class MAYAFLUX_API Sink {
15public:
16 virtual ~Sink() = default;
17
18 /**
19 * @brief Write a journal entry to this sink
20 */
21 virtual void write(const JournalEntry& entry) = 0;
22
23 /**
24 * @brief Write a realtime entry to this sink
25 */
26 virtual void write(const RealtimeEntry& entry) = 0;
27
28 /**
29 * @brief Flush any buffered writes
30 */
31 virtual void flush() = 0;
32
33 /**
34 * @brief Check if sink is available/healthy
35 */
36 [[nodiscard]] virtual bool is_available() const = 0;
37};
38
39} // namespace MayaFlux::Journal
virtual void write(const JournalEntry &entry)=0
Write a journal entry to this sink.
virtual ~Sink()=default
virtual bool is_available() const =0
Check if sink is available/healthy.
virtual void flush()=0
Flush any buffered writes.
virtual void write(const RealtimeEntry &entry)=0
Write a realtime entry to this sink.
A log entry structure to encapsulate log message details.
Lightweight entry for lock-free ring buffer.