diff options
author | Sadie Powell <sadie@witchery.services> | 2025-03-17 12:58:22 +0000 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2025-03-17 12:58:22 +0000 |
commit | bb1f93f1508ebdd0a6bef227cf924229dd05497b (patch) | |
tree | 807223c968d79a37c125cb2b5f41248f5ed6a45a /modules/extra/xmlrpc.cpp | |
parent | 85fbc500d8bcc83a26f3227c90cb82896b767d62 (diff) |
Switch RPC event registration to use the service system.
Diffstat (limited to 'modules/extra/xmlrpc.cpp')
-rw-r--r-- | modules/extra/xmlrpc.cpp | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/modules/extra/xmlrpc.cpp b/modules/extra/xmlrpc.cpp index e0efd1a9c..de23f0dc1 100644 --- a/modules/extra/xmlrpc.cpp +++ b/modules/extra/xmlrpc.cpp @@ -23,8 +23,6 @@ class XMLRPCServiceInterface final , public HTTPPage { private: - RPC::Events events; - static void SendError(HTTPReply &reply, xmlrpc_env &env) { Log(LOG_DEBUG) << "XML-RPC error " << env.fault_code << ": " << env.fault_string; @@ -75,21 +73,6 @@ public: { } - const RPC::Events &GetEvents() override - { - return events; - } - - bool Register(RPC::Event *event) override - { - return this->events.emplace(event->GetEvent(), event).second; - } - - bool Unregister(RPC::Event *event) override - { - return this->events.erase(event->GetEvent()) != 0; - } - bool OnRequest(HTTPProvider *provider, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply) override { xmlrpc_env env; @@ -110,8 +93,8 @@ public: request.name = method; delete method; - auto event = this->events.find(request.name); - if (event == this->events.end()) + ServiceReference<RPC::Event> event(RPC_EVENT, request.name); + if (!event) { xmlrpc_env_set_fault(&env, RPC::ERR_METHOD_NOT_FOUND, "Method not found"); SendError(reply, env); @@ -152,17 +135,16 @@ public: } xmlrpc_DECREF(params); - auto *eh = event->second; - if (request.data.size() < eh->GetMinParams()) + if (request.data.size() < event->GetMinParams()) { auto error = Anope::printf("Not enough parameters (given %zu, expected %zu)", - request.data.size(), eh->GetMinParams()); + request.data.size(), event->GetMinParams()); xmlrpc_env_set_fault(&env, RPC::ERR_INVALID_PARAMS, error.c_str()); SendError(reply, env); return true; } - if (!eh->Run(this, client, request)) + if (!event->Run(this, client, request)) return false; this->Reply(request); |