mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-01 10:28:52 -05:00
General improvements to prevent running out of memory while copying files via Mudita Center
53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
// Copyright (c) 2017-2023, 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 = LOGGER_CIRCULAR_BUFFER_SIZE;
|
|
static constexpr size_t numberOfBuffers = 2;
|
|
|
|
size_t currentIndex;
|
|
LoggerBuffer buffer[numberOfBuffers];
|
|
LoggerBuffer *currentBuffer;
|
|
LoggerBuffer *flushBuffer;
|
|
};
|