1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2 
3 #include "remote/apiaction.hpp"
4 #include "base/singleton.hpp"
5 
6 using namespace icinga;
7 
ApiAction(std::vector<String> types,Callback action)8 ApiAction::ApiAction(std::vector<String> types, Callback action)
9 	: m_Types(std::move(types)), m_Callback(std::move(action))
10 { }
11 
Invoke(const ConfigObject::Ptr & target,const Dictionary::Ptr & params)12 Value ApiAction::Invoke(const ConfigObject::Ptr& target, const Dictionary::Ptr& params)
13 {
14 	return m_Callback(target, params);
15 }
16 
GetTypes() const17 const std::vector<String>& ApiAction::GetTypes() const
18 {
19 	return m_Types;
20 }
21 
GetByName(const String & name)22 ApiAction::Ptr ApiAction::GetByName(const String& name)
23 {
24 	return ApiActionRegistry::GetInstance()->GetItem(name);
25 }
26 
Register(const String & name,const ApiAction::Ptr & action)27 void ApiAction::Register(const String& name, const ApiAction::Ptr& action)
28 {
29 	ApiActionRegistry::GetInstance()->Register(name, action);
30 }
31 
Unregister(const String & name)32 void ApiAction::Unregister(const String& name)
33 {
34 	ApiActionRegistry::GetInstance()->Unregister(name);
35 }
36 
GetInstance()37 ApiActionRegistry *ApiActionRegistry::GetInstance()
38 {
39 	return Singleton<ApiActionRegistry>::GetInstance();
40 }
41