AuroraRuntime/Source/Logging/Sinks/StreamSink.hpp

39 lines
1.2 KiB
C++
Raw Normal View History

/***
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<Aurora::IO::IStreamWriter> &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<Aurora::IO::IStreamWriter> pPipe_;
AuByteBuffer logBuffer_;
AuMutex logMutex_;
bool bLengthPrefixed_;
bool bText_;
ADD_FORMATTER_CONTAINER;
};
void NewStreamSinkRelease(IFormattedSink *pLogger);
IFormattedSink *NewStreamSinkNew(const AuSPtr<Aurora::IO::IStreamWriter> &pPipe,
bool bText,
bool bLengthPrefixed);
}