From c566f6dc31a39c40fdd66b463d4753d58d0580fc Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Mon, 31 Mar 2025 10:44:22 +0200 Subject: [PATCH] ApiFunction: store own name --- lib/remote/apifunction.cpp | 4 ++-- lib/remote/apifunction.hpp | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/remote/apifunction.cpp b/lib/remote/apifunction.cpp index 89e1d8734..f153dcb46 100644 --- a/lib/remote/apifunction.cpp +++ b/lib/remote/apifunction.cpp @@ -5,8 +5,8 @@ using namespace icinga; -ApiFunction::ApiFunction(Callback function) - : m_Callback(std::move(function)) +ApiFunction::ApiFunction(const char* name, Callback function) + : m_Name(name), m_Callback(std::move(function)) { } Value ApiFunction::Invoke(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& arguments) diff --git a/lib/remote/apifunction.hpp b/lib/remote/apifunction.hpp index 5a99db518..ea8b7cf1e 100644 --- a/lib/remote/apifunction.hpp +++ b/lib/remote/apifunction.hpp @@ -25,7 +25,12 @@ public: typedef std::function Callback; - ApiFunction(Callback function); + ApiFunction(const char* name, Callback function); + + const char* GetName() const noexcept + { + return m_Name; + } Value Invoke(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& arguments); @@ -33,6 +38,7 @@ public: static void Register(const String& name, const ApiFunction::Ptr& function); private: + const char* m_Name; Callback m_Callback; }; @@ -49,7 +55,7 @@ public: #define REGISTER_APIFUNCTION(name, ns, callback) \ INITIALIZE_ONCE([]() { \ - ApiFunction::Ptr func = new ApiFunction(callback); \ + ApiFunction::Ptr func = new ApiFunction(#ns "::" #name, callback); \ ApiFunctionRegistry::GetInstance()->Register(#ns "::" #name, func); \ })