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/rpc/jsonrpc.cpp | |
parent | 85fbc500d8bcc83a26f3227c90cb82896b767d62 (diff) |
Switch RPC event registration to use the service system.
Diffstat (limited to 'modules/rpc/jsonrpc.cpp')
-rw-r--r-- | modules/rpc/jsonrpc.cpp | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/modules/rpc/jsonrpc.cpp b/modules/rpc/jsonrpc.cpp index c0ae6df56..cb6835d47 100644 --- a/modules/rpc/jsonrpc.cpp +++ b/modules/rpc/jsonrpc.cpp @@ -26,8 +26,6 @@ class JSONRPCServiceInterface final , public HTTPPage { private: - RPC::Events events; - static std::pair<yyjson_mut_doc *, yyjson_mut_val *> CreateReply(const Anope::string &id) { auto* doc = yyjson_mut_doc_new(nullptr); @@ -94,21 +92,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 { yyjson_read_err error; @@ -159,23 +142,22 @@ public: yyjson_doc_free(doc); - auto event = this->events.find(request.name); - if (event == this->events.end()) + ServiceReference<RPC::Event> event(RPC_EVENT, request.name); + if (!event) { SendError(reply, RPC::ERR_METHOD_NOT_FOUND, "Method not found: " + request.name, id); return true; } - auto *eh = event->second; - if (request.data.size() < eh->GetMinParams()) + if (request.data.size() < event->GetMinParams()) { auto error = Anope::printf("Not enough parameters for %s (given %zu, expected %zu)", - request.name.c_str(), request.data.size(), eh->GetMinParams()); + request.name.c_str(), request.data.size(), event->GetMinParams()); SendError(reply, RPC::ERR_INVALID_PARAMS, error, id); return true; } - if (!eh->Run(this, client, request)) + if (!event->Run(this, client, request)) return false; this->Reply(request); |