1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2 
3 #include "remote/apifunction.hpp"
4 #include "base/singleton.hpp"
5 
6 using namespace icinga;
7 
ApiFunction(Callback function)8 ApiFunction::ApiFunction(Callback function)
9 	: m_Callback(std::move(function))
10 { }
11 
Invoke(const MessageOrigin::Ptr & origin,const Dictionary::Ptr & arguments)12 Value ApiFunction::Invoke(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& arguments)
13 {
14 	return m_Callback(origin, arguments);
15 }
16 
GetByName(const String & name)17 ApiFunction::Ptr ApiFunction::GetByName(const String& name)
18 {
19 	return ApiFunctionRegistry::GetInstance()->GetItem(name);
20 }
21 
Register(const String & name,const ApiFunction::Ptr & function)22 void ApiFunction::Register(const String& name, const ApiFunction::Ptr& function)
23 {
24 	ApiFunctionRegistry::GetInstance()->Register(name, function);
25 }
26 
Unregister(const String & name)27 void ApiFunction::Unregister(const String& name)
28 {
29 	ApiFunctionRegistry::GetInstance()->Unregister(name);
30 }
31 
GetInstance()32 ApiFunctionRegistry *ApiFunctionRegistry::GetInstance()
33 {
34 	return Singleton<ApiFunctionRegistry>::GetInstance();
35 }
36