From 820f229a9efe2678d1e85578aa086a1efdd73a30 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 23 Nov 2015 12:50:02 +0100 Subject: Add ServiceProvider::RegisterService(), call it from ModuleManager::AddService() --- src/base.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/base.cpp') diff --git a/src/base.cpp b/src/base.cpp index 67b136ec8..63b14256e 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -95,6 +95,10 @@ ServiceProvider::~ServiceProvider() { } +void ServiceProvider::RegisterService() +{ +} + ExtensionItem::ExtensionItem(const std::string& Key, ExtensibleType exttype, Module* mod) : ServiceProvider(mod, Key, SERVICE_METADATA) , type(exttype) -- cgit v1.3.1-10-gc9f91 From f3667d995e439a1d75fd9b56b29b610f3d877d8b Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 23 Nov 2015 12:52:03 +0100 Subject: Implement ExtensionItem::RegisterService() --- include/extensible.h | 4 ++++ src/base.cpp | 6 ++++++ src/modules.cpp | 4 ---- 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src/base.cpp') diff --git a/include/extensible.h b/include/extensible.h index a2c104377..3453f3e15 100644 --- a/include/extensible.h +++ b/include/extensible.h @@ -69,6 +69,10 @@ class CoreExport ExtensionItem : public ServiceProvider, public usecountbase /** Free the item */ virtual void free(void* item) = 0; + /** Register this object in the ExtensionManager + */ + void RegisterService() CXX11_OVERRIDE; + protected: /** Get the item from the internal map */ void* get_raw(const Extensible* container) const; diff --git a/src/base.cpp b/src/base.cpp index 63b14256e..4111451f8 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -144,6 +144,12 @@ void* ExtensionItem::unset_raw(Extensible* container) return rv; } +void ExtensionItem::RegisterService() +{ + if (!ServerInstance->Extensions.Register(this)) + throw ModuleException("Extension already exists: " + name); +} + bool ExtensionManager::Register(ExtensionItem* item) { return types.insert(std::make_pair(item->name, item)).second; diff --git a/src/modules.cpp b/src/modules.cpp index f5998f79c..ca13dad73 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -556,10 +556,6 @@ void ModuleManager::AddService(ServiceProvider& item) { switch (item.service) { - case SERVICE_METADATA: - if (!ServerInstance->Extensions.Register(static_cast(&item))) - throw ModuleException("Extension " + std::string(item.name) + " already exists."); - return; case SERVICE_DATA: case SERVICE_IOHOOK: { -- cgit v1.3.1-10-gc9f91