Line data Source code
1 : // 2 : // Copyright 2024 OpenModelViewer Authors 3 : // 4 : // Licensed under the Apache License, Version 2.0 (the "License"); 5 : // you may not use this file except in compliance with the License. 6 : // You may obtain a copy of the License at 7 : // 8 : // http://www.apache.org/licenses/LICENSE-2.0 9 : // 10 : // Unless required by applicable law or agreed to in writing, software 11 : // distributed under the License is distributed on an "AS IS" BASIS, 12 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 : // See the License for the specific language governing permissions and 14 : // limitations under the License. 15 : // 16 : 17 : #pragma once 18 : 19 : #include "openmodelviewer/core/log/log_entry.hpp" 20 : 21 : #include <string> 22 : 23 : namespace openmodelviewer::core::log 24 : { 25 : /** 26 : * @brief Interface for log sinks that consume and process log entries. 27 : */ 28 : class ILogSink 29 : { 30 : public: 31 36 : virtual ~ILogSink() = default; 32 : 33 : /** 34 : * @brief Writes a single log entry to the sink. 35 : * 36 : * @param entry The log entry to write. 37 : */ 38 : virtual void log(const LogEntry& entry) = 0; 39 : 40 : /** 41 : * @brief Flushes any buffered log data to the underlying sink destination. 42 : * 43 : * May be a no-op for sinks that are not buffered. 44 : */ 45 0 : virtual void flush() { /* default: no-op */ }; 46 : }; 47 : } // namespace openmodelviewer::core::log