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
|
|
|
|
{
|
2022-06-17 08:22:24 +00:00
|
|
|
struct IPCSink : IIPCLogger
|
2022-06-16 23:05:32 +00:00
|
|
|
{
|
2022-07-05 19:35:40 +00:00
|
|
|
IPCSink(const AuSPtr<Aurora::IO::IPC::IPCPipe> &pipe, bool lengthPrefixed);
|
2022-06-16 23:05:32 +00:00
|
|
|
|
2022-06-17 08:22:24 +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> pipe_;
|
|
|
|
AuByteBuffer logBuffer_;
|
|
|
|
AuThreadPrimitives::MutexUnique_t logMutex_;
|
2022-07-05 19:35:40 +00:00
|
|
|
bool lengthPrefixed_;
|
2022-06-16 23:05:32 +00:00
|
|
|
};
|
|
|
|
|
2022-06-17 08:22:24 +00:00
|
|
|
void NewIPCSinkRelease(IIPCLogger *logger);
|
2022-07-05 19:35:40 +00:00
|
|
|
IIPCLogger *NewIPCSinkNew(const AuString &str, bool lengthPrefixed);
|
2022-06-16 23:05:32 +00:00
|
|
|
}
|