Files
MuditaOS/module-utils/log/LoggerBuffer.cpp
Mateusz Grzegorzek 3fd237c1e4 [EGD-5181] Add Circular and Logger buffers
Add RandomStringGenerator class.
Implement Circular and Logger buffers.
Add UTs for LoggerBuffer.
2021-01-22 13:02:50 +01:00

38 lines
954 B
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "LoggerBuffer.hpp"
std::pair<bool, std::string> LoggerBuffer::get()
{
auto [result, logMsg] = StringCircularBuffer::get();
if (!result) {
return {result, logMsg};
}
if (numOfLostBytes > 0) {
logMsg += "\r\n" + std::to_string(numOfLostBytes) + " " + lostBytesMessage;
numOfLostBytes = 0;
}
return {true, logMsg};
}
void LoggerBuffer::put(const std::string &logMsg)
{
updateNumOfLostBytes();
StringCircularBuffer::put(logMsg);
}
void LoggerBuffer::put(std::string &&logMsg)
{
updateNumOfLostBytes();
StringCircularBuffer::put(std::move(logMsg));
}
void LoggerBuffer::updateNumOfLostBytes()
{
if (StringCircularBuffer::isFull()) {
auto [_, lostMsg] = StringCircularBuffer::get();
numOfLostBytes += lostMsg.length();
}
}