summaryrefslogtreecommitdiff
path: root/modules/rpc/rpc_system.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/rpc/rpc_system.cpp')
-rw-r--r--modules/rpc/rpc_system.cpp31
1 files changed, 10 insertions, 21 deletions
diff --git a/modules/rpc/rpc_system.cpp b/modules/rpc/rpc_system.cpp
index 4982e0646..2c2f33fd2 100644
--- a/modules/rpc/rpc_system.cpp
+++ b/modules/rpc/rpc_system.cpp
@@ -19,9 +19,12 @@ class AnopeDebugTypesRPCEvent final
: public RPC::Event
{
public:
- AnopeDebugTypesRPCEvent()
- : RPC::Event("anope.debugTypes")
+ AnopeDebugTypesRPCEvent(Module *o)
+ : RPC::Event(o, "anope.debugTypes")
{
+#if !DEBUG_BUILD
+ Unregister();
+#endif
}
bool Run(RPC::ServiceInterface *iface, HTTPClient *client, RPC::Request &request) override
@@ -80,15 +83,15 @@ class SystemListMethodsRPCEvent final
: public RPC::Event
{
public:
- SystemListMethodsRPCEvent()
- : RPC::Event("system.listMethods")
+ SystemListMethodsRPCEvent(Module *o)
+ : RPC::Event(o, "system.listMethods")
{
}
bool Run(RPC::ServiceInterface *iface, HTTPClient *client, RPC::Request &request) override
{
auto &root = request.Root<RPC::Array>();
- for (const auto &[event, _] : iface->GetEvents())
+ for (const auto &event : Service::GetServiceKeys(RPC_EVENT))
root.Reply(event);
return true;
}
@@ -104,25 +107,11 @@ private:
public:
ModuleRPCSystem(const Anope::string &modname, const Anope::string &creator)
: Module(modname, creator, EXTRA | VENDOR)
+ , anopedebugtypesrpcevent(this)
+ , systemlistmethodsrpcevent(this)
{
if (!RPC::service)
throw ModuleException("Unable to find RPC interface, is jsonrpc/xmlrpc loaded?");
-
-#if DEBUG_BUILD
- RPC::service->Register(&anopedebugtypesrpcevent);
-#endif
- RPC::service->Register(&systemlistmethodsrpcevent);
- }
-
- ~ModuleRPCSystem() override
- {
- if (!RPC::service)
- return;
-
-#if DEBUG_BUILD
- RPC::service->Unregister(&anopedebugtypesrpcevent);
-#endif
- RPC::service->Unregister(&systemlistmethodsrpcevent);
}
};