/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: FileSink.hpp Date: 2022-1-24 Author: Reece ***/ #pragma once namespace Aurora::Logging::Sinks { struct FIOSink : IBasicSink { FIOSink(const AuString &path, bool binary); bool Init(); void OnMessageBlocking(AuUInt8 level, const ConsoleMessage &msg) override; bool OnMessageNonblocking(AuUInt8 level, const ConsoleMessage &msg) override; void OnFlush() override; private: const AuString path_; AuIOFS::OpenWriteUnique_t file_; bool binary_; AuByteBuffer logBuffer_; AuThreadPrimitives::MutexUnique_t logMutex_; }; void NewFileSinkRelease(IBasicSink *logger); IBasicSink *NewFileSinkNew(const AuString &str, bool binary); }