// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/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; };