From afa2f269aae385b00800bb8a351f6687ddc627a2 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 29 Sep 2015 09:05:23 +0100 Subject: Use AdHoc plugins for loggers --- project2/common/logger.cpp | 13 +++++++------ project2/common/logger.h | 15 ++++++++------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/project2/common/logger.cpp b/project2/common/logger.cpp index 98aaf0b..64df516 100644 --- a/project2/common/logger.cpp +++ b/project2/common/logger.cpp @@ -2,7 +2,7 @@ #define SYSLOG_NAMES 1 // Enables the definition of names in syslog.h #include "logger.h" -#include "instanceStore.impl.h" +#include Log Logger::log; @@ -17,7 +17,7 @@ Log::~Log() } void -Log::setLoggerAt(LogDriverLoader * ldr, int level) +Log::setLoggerAt(LogDriverFactory * ldr, int level) { if (level == -1) { logs.erase(ldr); @@ -26,9 +26,9 @@ Log::setLoggerAt(LogDriverLoader * ldr, int level) logs[ldr] = ldr->create(); } lowestLevel = -1; - for (const auto & log : InstanceSet::GetAll()) { - if (log->loggerLevel() > lowestLevel) { - lowestLevel = log->loggerLevel(); + for (const auto & log : AdHoc::PluginManager::getDefault()->getAll()) { + if (log->implementation()->loggerLevel() > lowestLevel) { + lowestLevel = log->implementation()->loggerLevel(); } } } @@ -102,5 +102,6 @@ LogDriverBase::~LogDriverBase() { } -INSTANTIATESTORE(std::string, LogDriverLoader); +template class AdHoc::Factory; +INSTANTIATEPLUGINOF(LogDriverFactory) diff --git a/project2/common/logger.h b/project2/common/logger.h index 0a6398e..cc4409f 100644 --- a/project2/common/logger.h +++ b/project2/common/logger.h @@ -8,7 +8,8 @@ #include #include #include "intrusivePtrBase.h" -#include "genLoader.h" +#include "componentLoader.h" +#include #include /// Base class for classes providing a logging facility @@ -20,7 +21,7 @@ class LogDriverBase : public virtual IntrusivePtrBase { virtual void message(int priority, const char * msg) const = 0; }; -class LogDriverLoader : public GenLoader { +class LogDriverFactory : public AdHoc::Factory { public: virtual int loggerLevel() const = 0; }; @@ -28,12 +29,12 @@ class LogDriverLoader : public GenLoader { class Log { public: typedef boost::intrusive_ptr LogDriverBasePtr; - typedef std::map LogDrivers; + typedef std::map LogDrivers; Log(); ~Log(); - void setLoggerAt(LogDriverLoader *, int level); + void setLoggerAt(LogDriverFactory *, int level); void message(int priority, const char * msg) const; void messagef(int priority, const char * msgfmt, ...) const __attribute__ ((format (printf, 3, 4))); @@ -68,9 +69,9 @@ class Logger { }; template -class LogDriverLoaderImpl : public LogDriverLoader::For { +class LogDriverFactoryImpl : public LogDriverFactory, public ComponentLoader { public: - LogDriverLoaderImpl() : + LogDriverFactoryImpl() : level(LoggerType::level) { } @@ -94,7 +95,7 @@ class LogDriverLoaderImpl : public LogDriverLoader::For instance; }; #define DECLARE_LOGGER_LOADER(N, T) \ - DECLARE_CUSTOM_COMPONENT_LOADER(N, T, LogDriverLoaderImpl, LogDriverLoader); + NAMEDPLUGIN(N, LogDriverFactoryImpl, LogDriverFactory) #endif -- cgit v1.2.3