mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-27 07:34:15 +02:00
ApiFunction: store own name
This commit is contained in:
parent
a65f2d6b41
commit
c566f6dc31
@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
ApiFunction::ApiFunction(Callback function)
|
ApiFunction::ApiFunction(const char* name, Callback function)
|
||||||
: m_Callback(std::move(function))
|
: m_Name(name), m_Callback(std::move(function))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
Value ApiFunction::Invoke(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& arguments)
|
Value ApiFunction::Invoke(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& arguments)
|
||||||
|
@ -25,7 +25,12 @@ public:
|
|||||||
|
|
||||||
typedef std::function<Value(const MessageOrigin::Ptr& origin, const Dictionary::Ptr&)> Callback;
|
typedef std::function<Value(const MessageOrigin::Ptr& origin, const Dictionary::Ptr&)> 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);
|
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);
|
static void Register(const String& name, const ApiFunction::Ptr& function);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
const char* m_Name;
|
||||||
Callback m_Callback;
|
Callback m_Callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -49,7 +55,7 @@ public:
|
|||||||
|
|
||||||
#define REGISTER_APIFUNCTION(name, ns, callback) \
|
#define REGISTER_APIFUNCTION(name, ns, callback) \
|
||||||
INITIALIZE_ONCE([]() { \
|
INITIALIZE_ONCE([]() { \
|
||||||
ApiFunction::Ptr func = new ApiFunction(callback); \
|
ApiFunction::Ptr func = new ApiFunction(#ns "::" #name, callback); \
|
||||||
ApiFunctionRegistry::GetInstance()->Register(#ns "::" #name, func); \
|
ApiFunctionRegistry::GetInstance()->Register(#ns "::" #name, func); \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user