mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-04-20 06:59:13 -04:00
Due to losing bytes the logger has a worker which is responsible for dumping logs to the file. The logger also has its own timer to dump logs every 15 minutes. EventManager is not responsible for interval dumping logs now.
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#pragma once
|
|
|
|
#include "LoggerBuffer.hpp"
|
|
|
|
class LoggerBufferContainer
|
|
{
|
|
public:
|
|
LoggerBufferContainer()
|
|
: currentIndex{0}, buffer{LoggerBuffer(circularBufferSize), LoggerBuffer(circularBufferSize)},
|
|
currentBuffer{buffer}, flushBuffer{buffer}
|
|
{}
|
|
|
|
LoggerBuffer *getFlushBuffer()
|
|
{
|
|
return flushBuffer;
|
|
}
|
|
|
|
LoggerBuffer *getCurrentBuffer()
|
|
{
|
|
return currentBuffer;
|
|
}
|
|
|
|
constexpr size_t getCircularBufferSize()
|
|
{
|
|
return circularBufferSize;
|
|
}
|
|
|
|
void nextBuffer()
|
|
{
|
|
++currentIndex;
|
|
flushBuffer = currentBuffer;
|
|
currentIndex %= numberOfBuffers;
|
|
currentBuffer = &buffer[currentIndex];
|
|
}
|
|
|
|
size_t getCurrentIndex()
|
|
{
|
|
return currentIndex;
|
|
}
|
|
|
|
private:
|
|
static constexpr size_t circularBufferSize = 1024;
|
|
static constexpr size_t numberOfBuffers = 2;
|
|
|
|
size_t currentIndex;
|
|
LoggerBuffer buffer[numberOfBuffers];
|
|
LoggerBuffer *currentBuffer;
|
|
LoggerBuffer *flushBuffer;
|
|
};
|