From 68a84802517029dfd89d0476ccf0597181a2c55a Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Fri, 8 Nov 2024 12:43:08 +0100 Subject: [PATCH] Introduce Registry::GetInstance() to deduplicate such methods in derived classes and inline them, as side effect, to speed up calls. --- lib/base/registry.hpp | 6 ++++++ lib/db_ido/dbtype.cpp | 5 ----- lib/db_ido/dbtype.hpp | 3 --- lib/remote/apiaction.cpp | 6 ------ lib/remote/apiaction.hpp | 2 -- lib/remote/apifunction.cpp | 6 ------ lib/remote/apifunction.hpp | 2 -- lib/remote/eventqueue.cpp | 6 ------ lib/remote/eventqueue.hpp | 2 -- 9 files changed, 6 insertions(+), 32 deletions(-) diff --git a/lib/base/registry.hpp b/lib/base/registry.hpp index f60c3490a..42985f6ce 100644 --- a/lib/base/registry.hpp +++ b/lib/base/registry.hpp @@ -7,6 +7,7 @@ #include "base/atomic.hpp" #include "base/exception.hpp" #include "base/string.hpp" +#include "base/singleton.hpp" #include #include #include @@ -26,6 +27,11 @@ class Registry public: typedef std::unordered_map ItemMap; + static Registry* GetInstance() + { + return Singleton::GetInstance(); + } + void Register(const String& name, const T& item) { std::unique_lock lock (m_Mutex); diff --git a/lib/db_ido/dbtype.cpp b/lib/db_ido/dbtype.cpp index c5476b179..8006171ce 100644 --- a/lib/db_ido/dbtype.cpp +++ b/lib/db_ido/dbtype.cpp @@ -133,8 +133,3 @@ std::set DbType::GetAllTypes() return result; } - -DbTypeRegistry *DbTypeRegistry::GetInstance() -{ - return Singleton::GetInstance(); -} diff --git a/lib/db_ido/dbtype.hpp b/lib/db_ido/dbtype.hpp index c8ebc4504..d4cf82122 100644 --- a/lib/db_ido/dbtype.hpp +++ b/lib/db_ido/dbtype.hpp @@ -6,7 +6,6 @@ #include "db_ido/i2-db_ido.hpp" #include "base/object.hpp" #include "base/registry.hpp" -#include "base/singleton.hpp" #include namespace icinga @@ -64,8 +63,6 @@ private: */ class DbTypeRegistry : public Registry { -public: - static DbTypeRegistry *GetInstance(); }; /** diff --git a/lib/remote/apiaction.cpp b/lib/remote/apiaction.cpp index ccde28190..d2cf96897 100644 --- a/lib/remote/apiaction.cpp +++ b/lib/remote/apiaction.cpp @@ -1,7 +1,6 @@ /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ #include "remote/apiaction.hpp" -#include "base/singleton.hpp" using namespace icinga; @@ -28,8 +27,3 @@ void ApiAction::Register(const String& name, const ApiAction::Ptr& action) { ApiActionRegistry::GetInstance()->Register(name, action); } - -ApiActionRegistry *ApiActionRegistry::GetInstance() -{ - return Singleton::GetInstance(); -} diff --git a/lib/remote/apiaction.hpp b/lib/remote/apiaction.hpp index 2bb98b1b6..d0db391a0 100644 --- a/lib/remote/apiaction.hpp +++ b/lib/remote/apiaction.hpp @@ -47,8 +47,6 @@ private: */ class ApiActionRegistry : public Registry { -public: - static ApiActionRegistry *GetInstance(); }; #define REGISTER_APIACTION(name, types, callback) \ diff --git a/lib/remote/apifunction.cpp b/lib/remote/apifunction.cpp index f153dcb46..166b0fd1a 100644 --- a/lib/remote/apifunction.cpp +++ b/lib/remote/apifunction.cpp @@ -1,7 +1,6 @@ /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ #include "remote/apifunction.hpp" -#include "base/singleton.hpp" using namespace icinga; @@ -23,8 +22,3 @@ void ApiFunction::Register(const String& name, const ApiFunction::Ptr& function) { ApiFunctionRegistry::GetInstance()->Register(name, function); } - -ApiFunctionRegistry *ApiFunctionRegistry::GetInstance() -{ - return Singleton::GetInstance(); -} diff --git a/lib/remote/apifunction.hpp b/lib/remote/apifunction.hpp index ea8b7cf1e..3c76a5735 100644 --- a/lib/remote/apifunction.hpp +++ b/lib/remote/apifunction.hpp @@ -49,8 +49,6 @@ private: */ class ApiFunctionRegistry : public Registry { -public: - static ApiFunctionRegistry *GetInstance(); }; #define REGISTER_APIFUNCTION(name, ns, callback) \ diff --git a/lib/remote/eventqueue.cpp b/lib/remote/eventqueue.cpp index 819f95a6a..fa7ab0c16 100644 --- a/lib/remote/eventqueue.cpp +++ b/lib/remote/eventqueue.cpp @@ -4,7 +4,6 @@ #include "remote/eventqueue.hpp" #include "remote/filterutility.hpp" #include "base/io-engine.hpp" -#include "base/singleton.hpp" #include "base/logger.hpp" #include "base/utility.hpp" #include @@ -125,11 +124,6 @@ void EventQueue::Register(const String& name, const EventQueue::Ptr& function) EventQueueRegistry::GetInstance()->Register(name, function); } -EventQueueRegistry *EventQueueRegistry::GetInstance() -{ - return Singleton::GetInstance(); -} - std::mutex EventsInbox::m_FiltersMutex; std::map EventsInbox::m_Filters ({{"", EventsInbox::Filter{1, Expression::Ptr()}}}); diff --git a/lib/remote/eventqueue.hpp b/lib/remote/eventqueue.hpp index 833714f9d..2836ec140 100644 --- a/lib/remote/eventqueue.hpp +++ b/lib/remote/eventqueue.hpp @@ -61,8 +61,6 @@ private: */ class EventQueueRegistry : public Registry { -public: - static EventQueueRegistry *GetInstance(); }; enum class EventType : uint_fast8_t