AuroraRuntime/Source/Logging/Sinks/IPCSink.hpp
2022-06-17 00:05:32 +01:00

30 lines
804 B
C++

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: IPCSink.hpp
Date: 2022-6-16
Author: Reece
***/
#pragma once
namespace Aurora::Logging::Sinks
{
struct IPCSink : IBasicSink
{
IPCSink(const AuSPtr<Aurora::IO::IPC::IPCPipe> &pipe);
bool Init();
void OnMessageBlocking(AuUInt8 level, const ConsoleMessage &msg) override;
bool OnMessageNonblocking(AuUInt8 level, const ConsoleMessage &msg) override;
void OnFlush() override;
private:
AuSPtr<Aurora::IO::IPC::IPCPipe> pipe_;
AuByteBuffer logBuffer_;
AuThreadPrimitives::MutexUnique_t logMutex_;
};
void NewIPCSinkRelease(IBasicSink *logger);
IBasicSink *NewIPCSinkNew(const AuString &str);
}