AuroraRuntime/Source/Logging/Sinks/IPCSink.hpp

33 lines
961 B
C++
Raw Permalink Normal View History

2022-06-16 23:05:32 +00:00
/***
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 : IIPCLogger
2022-06-16 23:05:32 +00:00
{
IPCSink(const AuSPtr<Aurora::IO::IPC::IPCPipe> &pipe, bool lengthPrefixed);
2022-06-16 23:05:32 +00:00
AuSPtr<IO::IPC::IPCPipe> ToPipe() override;
2022-06-16 23:05:32 +00:00
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> pPipe_;
2022-06-16 23:05:32 +00:00
AuByteBuffer logBuffer_;
AuThreadPrimitives::Mutex logMutex_;
bool bLengthPrefixed_;
2022-06-16 23:05:32 +00:00
};
void NewIPCSinkRelease(IIPCLogger *logger);
IIPCLogger *NewIPCSinkNew(const AuString &str, bool lengthPrefixed);
2022-06-16 23:05:32 +00:00
}