/*** Copyright (C) 2024 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: StreamSink.hpp Date: 2024-4-10 Author: Reece ***/ #pragma once #include "../AuFormatterContainer.hpp" namespace Aurora::Logging::Sinks { struct StreamSink : IFormattedSink { StreamSink(const AuSPtr &pPipe, bool bText, bool bLengthPrefixed); void OnMessageBlocking(AuUInt8 level, const ConsoleMessage &msg) override; bool OnMessageNonblocking(AuUInt8 level, const ConsoleMessage &msg) override; void OnFlush() override; private: AuSPtr pPipe_; AuByteBuffer logBuffer_; AuMutex logMutex_; bool bLengthPrefixed_; bool bText_; ADD_FORMATTER_CONTAINER; }; void NewStreamSinkRelease(IFormattedSink *pLogger); IFormattedSink *NewStreamSinkNew(const AuSPtr &pPipe, bool bText, bool bLengthPrefixed); }