Listenbrainz: fixed listens parsing. fixes #262

This commit is contained in:
emeric
2022-09-26 20:41:31 +02:00
parent f8d61b67ac
commit ff63ad6448
14 changed files with 453 additions and 144 deletions
+4 -2
View File
@@ -19,14 +19,16 @@
#include "utils/StreamLogger.hpp"
StreamLogger::StreamLogger(std::ostream& os)
StreamLogger::StreamLogger(std::ostream& os, EnumSet<Severity> severities)
: _os {os}
, _severities {severities}
{
}
void
StreamLogger::processLog(const Log& log)
{
_os << "[" << getSeverityName(log.getSeverity()) << "] [" << getModuleName(log.getModule()) << "] " << log.getMessage() << std::endl;
if (_severities.contains(log.getSeverity()))
_os << "[" << getSeverityName(log.getSeverity()) << "] [" << getModuleName(log.getModule()) << "] " << log.getMessage() << std::endl;
}
+6 -3
View File
@@ -20,6 +20,9 @@
#pragma once
#include <cassert>
#include <cstdint>
#include <initializer_list>
#include <limits>
#include <type_traits>
template <typename T, typename underlying_type = std::uint32_t>
@@ -47,13 +50,13 @@ class EnumSet
constexpr void insert(T value)
{
assert(static_cast<size_t>(value) < sizeof(_bitfield) * 8);
assert(static_cast<std::size_t>(value) < sizeof(_bitfield) * 8);
_bitfield |= (underlying_type{ 1 } << static_cast<underlying_type>(value));
}
constexpr void erase(T value)
{
assert(static_cast<size_t>(value) < sizeof(_bitfield) * 8);
assert(static_cast<std::size_t>(value) < sizeof(_bitfield) * 8);
_bitfield &= ~(underlying_type{ 1 } << static_cast<underlying_type>(value));
}
@@ -64,7 +67,7 @@ class EnumSet
constexpr bool contains(T value) const
{
assert(static_cast<size_t>(value) < sizeof(_bitfield) * 8);
assert(static_cast<std::size_t>(value) < sizeof(_bitfield) * 8);
return _bitfield & (underlying_type{ 1 } << static_cast<underlying_type>(value));
}
@@ -19,16 +19,20 @@
#pragma once
#include "Logger.hpp"
#include "utils/EnumSet.hpp"
#include "utils/Logger.hpp"
class StreamLogger final : public Logger
{
public:
StreamLogger(std::ostream& oss);
static constexpr EnumSet<Severity> defaultSeverities {Severity::FATAL, Severity::ERROR, Severity::WARNING, Severity::INFO};
StreamLogger(std::ostream& oss, EnumSet<Severity> severities = defaultSeverities);
void processLog(const Log& log);
private:
std::ostream& _os;
const EnumSet<Severity> _severities;
};