MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/logging/LoggerProvider.cpp

36 lines
1.0 KiB
C++

#include "LoggerProvider.hh"
#include "MacroExt.hh"
#include <utility>
#include "../memories/instance_object.hpp"
namespace logging {
logging::LoggerProvider::LoggerProvider( std::pmr::memory_resource * mem, base::log_permit_flag global_permissions_, uint32_t on_cnt_ )
: loggers( collection::key_compare(), mem ), memory(mem), global_permissons(global_permissions_), global_on_count(on_cnt_) {}
Logger * logging::LoggerProvider::get_logger(Logger::Id idx, base::log_permit_flag permissons_, std::pmr::memory_resource * allocator) {
Logger * logger = nullptr;
collection::iterator found = loggers.find(idx);
if( found != loggers.end() ) {
logger = found->second;
} else {
unsigned int allowed_options = ( global_permissons & permissons_ );
std::pmr::memory_resource * mr = (allocator != nullptr) ? allocator : std::pmr::get_default_resource();
logger = memories::instance_object<Logger>(*mr, idx, allowed_options, global_on_count);
loggers[idx] =logger;
}
return logger;
}
}