Files
MuditaOS/module-utils/log/LoggerBufferContainer.hpp
Dawid Wojtas e77b5d6702 [MOS-424] Improvement of logger module
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.
2022-09-15 11:58:09 +02:00

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;
};