summaryrefslogtreecommitdiff
path: root/src/modulemanager.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-08-15 01:45:38 -0400
committerAdam <Adam@anope.org>2010-08-15 01:45:38 -0400
commita950ed8cabfeca55c909f02412b1788bd386dcff (patch)
treecfa9a16c2385176490ea849f6a4041ee9456c8eb /src/modulemanager.cpp
parent4d0a1aaabd861bb7cd1e378bd1e600af1d34d5d2 (diff)
Rewrote the MySQL API to use threads. This acts similar to before, but is faster. Removed db_mysql_execute for now.
Diffstat (limited to 'src/modulemanager.cpp')
-rw-r--r--src/modulemanager.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp
index 11424b78b..8ab72eef5 100644
--- a/src/modulemanager.cpp
+++ b/src/modulemanager.cpp
@@ -11,6 +11,7 @@
#include "version.h"
#include <algorithm> // std::find
+std::map<Anope::string, Service *> ModuleManager::ServiceProviders;
std::vector<Module *> ModuleManager::EventHandlers[I_END];
void ModuleManager::LoadModuleList(std::list<Anope::string> &ModuleList)
@@ -430,3 +431,36 @@ void ModuleManager::UnloadAll(bool unload_proto)
DeleteModule(m);
}
}
+
+/** Register a service
+ * @oaram s The service
+ * @return true if it was successfully registeed, else false (service name colision)
+ */
+bool ModuleManager::RegisterService(Service *s)
+{
+ return ModuleManager::ServiceProviders.insert(std::make_pair(s->name, s)).second;
+}
+
+/** Unregister a service
+ * @param s The service
+ * @return true if it was unregistered successfully
+ */
+bool ModuleManager::UnregisterService(Service *s)
+{
+ return ModuleManager::ServiceProviders.erase(s->name);
+}
+
+/** Get a service
+ * @param name The service name
+ * @param s The service
+ * @return The service
+ */
+Service *ModuleManager::GetService(const Anope::string &name)
+{
+ std::map<Anope::string, Service *>::const_iterator it = ModuleManager::ServiceProviders.find(name);
+
+ if (it != ModuleManager::ServiceProviders.end())
+ return it->second;
+ return NULL;
+}
+