mirror of https://github.com/Icinga/icinga2.git
parent
f05858d3ad
commit
553bd3246b
|
@ -36,7 +36,7 @@ inline bool InitializeOnceHelper(InitializeFunc func)
|
|||
|
||||
#define INITIALIZE_ONCE(func) \
|
||||
namespace { \
|
||||
I2_EXPORT bool l_InitializeOnce(InitializeOnceHelper(func)); \
|
||||
I2_EXPORT bool l_InitializeOnce(icinga::InitializeOnceHelper(func)); \
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#define REGISTRY_H
|
||||
|
||||
#include "base/i2-base.h"
|
||||
#include "base/singleton.h"
|
||||
#include "base/qstring.h"
|
||||
#include <map>
|
||||
#include <boost/thread/mutex.hpp>
|
||||
|
@ -42,11 +41,6 @@ class Registry
|
|||
public:
|
||||
typedef std::map<String, T> ItemMap;
|
||||
|
||||
static Registry<U, T> *GetInstance(void)
|
||||
{
|
||||
return Singleton<Registry<U, T> >::GetInstance();
|
||||
}
|
||||
|
||||
void RegisterIfNew(const String& name, const T& item)
|
||||
{
|
||||
boost::mutex::scoped_lock lock(m_Mutex);
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "base/scriptfunction.h"
|
||||
#include "base/registry.h"
|
||||
#include "base/singleton.h"
|
||||
|
||||
using namespace icinga;
|
||||
|
||||
|
@ -36,3 +37,9 @@ RegisterFunctionHelper::RegisterFunctionHelper(const String& name, const ScriptF
|
|||
ScriptFunction::Ptr func = make_shared<ScriptFunction>(function);
|
||||
ScriptFunctionRegistry::GetInstance()->Register(name, func);
|
||||
}
|
||||
|
||||
ScriptFunctionRegistry *ScriptFunctionRegistry::GetInstance(void)
|
||||
{
|
||||
return Singleton<ScriptFunctionRegistry>::GetInstance();
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include "base/i2-base.h"
|
||||
#include "base/registry.h"
|
||||
#include "base/singleton.h"
|
||||
#include "base/value.h"
|
||||
#include "base/scriptfunctionwrapper.h"
|
||||
#include <vector>
|
||||
|
@ -56,7 +57,10 @@ private:
|
|||
* @ingroup base
|
||||
*/
|
||||
class I2_BASE_API ScriptFunctionRegistry : public Registry<ScriptFunctionRegistry, ScriptFunction::Ptr>
|
||||
{ };
|
||||
{
|
||||
public:
|
||||
static ScriptFunctionRegistry *GetInstance(void);
|
||||
};
|
||||
|
||||
/**
|
||||
* Helper class for registering ScriptFunction implementation classes.
|
||||
|
|
|
@ -22,11 +22,9 @@
|
|||
|
||||
using namespace icinga;
|
||||
|
||||
Registry<ScriptVariable, Value> ScriptVariable::m_Registry;
|
||||
|
||||
Value ScriptVariable::Get(const String& name)
|
||||
{
|
||||
Value value = m_Registry.GetItem(name);
|
||||
Value value = ScriptVariableRegistry::GetInstance()->GetItem(name);
|
||||
if (value.IsEmpty())
|
||||
Log(LogWarning, "icinga", "Tried to access empty variable: " + name);
|
||||
|
||||
|
@ -35,10 +33,10 @@ Value ScriptVariable::Get(const String& name)
|
|||
|
||||
void ScriptVariable::Set(const String& name, const Value& value)
|
||||
{
|
||||
m_Registry.Register(name, value);
|
||||
ScriptVariableRegistry::GetInstance()->Register(name, value);
|
||||
}
|
||||
|
||||
void ScriptVariable::Declare(const String& name, const Value& value)
|
||||
{
|
||||
m_Registry.RegisterIfNew(name, value);
|
||||
ScriptVariableRegistry::GetInstance()->RegisterIfNew(name, value);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include "base/i2-base.h"
|
||||
#include "base/registry.h"
|
||||
#include "base/singleton.h"
|
||||
#include "base/value.h"
|
||||
|
||||
namespace icinga
|
||||
|
@ -43,6 +44,15 @@ private:
|
|||
static Registry<ScriptVariable, Value> m_Registry;
|
||||
};
|
||||
|
||||
class I2_BASE_API ScriptVariableRegistry : public Registry<ScriptVariableRegistry, Value>
|
||||
{
|
||||
public:
|
||||
static inline ScriptVariableRegistry *GetInstance(void)
|
||||
{
|
||||
return Singleton<ScriptVariableRegistry>::GetInstance();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* SCRIPTVARIABLE_H */
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include "base/convert.h"
|
||||
#include "base/debug.h"
|
||||
#include "base/utility.h"
|
||||
#include "base/scriptvariable.h"
|
||||
#include "base/application.h"
|
||||
#include "base/exception.h"
|
||||
#include <sstream>
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#include "config/i2-config.h"
|
||||
#include "config/debuginfo.h"
|
||||
#include "base/registry.h"
|
||||
#include "base/initialize.h"
|
||||
#include "base/singleton.h"
|
||||
#include <iostream>
|
||||
#include <boost/function.hpp>
|
||||
|
||||
|
@ -72,24 +74,23 @@ private:
|
|||
};
|
||||
|
||||
class I2_CONFIG_API ConfigFragmentRegistry : public Registry<ConfigFragmentRegistry, String>
|
||||
{ };
|
||||
|
||||
/**
|
||||
* Helper class for registering config fragments.
|
||||
*
|
||||
* @ingroup base
|
||||
*/
|
||||
class RegisterConfigFragmentHelper
|
||||
{
|
||||
public:
|
||||
RegisterConfigFragmentHelper(const String& name, const String& fragment)
|
||||
static inline ConfigFragmentRegistry *GetInstance(void)
|
||||
{
|
||||
ConfigFragmentRegistry::GetInstance()->Register(name, fragment);
|
||||
return Singleton<ConfigFragmentRegistry>::GetInstance();
|
||||
}
|
||||
};
|
||||
|
||||
#define REGISTER_CONFIG_FRAGMENT(id, name, fragment) \
|
||||
I2_EXPORT icinga::RegisterConfigFragmentHelper g_RegisterCF_ ## id(name, fragment)
|
||||
namespace { \
|
||||
void RegisterConfigFragment(void) \
|
||||
{ \
|
||||
icinga::ConfigFragmentRegistry::GetInstance()->Register(name, fragment); \
|
||||
} \
|
||||
\
|
||||
INITIALIZE_ONCE(RegisterConfigFragment); \
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -278,20 +278,26 @@ void ConfigType::ValidateArray(const Array::Ptr& array,
|
|||
|
||||
void ConfigType::Register(void)
|
||||
{
|
||||
Registry<ConfigType, ConfigType::Ptr>::GetInstance()->Register(GetName(), GetSelf());
|
||||
ConfigTypeRegistry::GetInstance()->Register(GetName(), GetSelf());
|
||||
}
|
||||
|
||||
ConfigType::Ptr ConfigType::GetByName(const String& name)
|
||||
{
|
||||
return Registry<ConfigType, ConfigType::Ptr>::GetInstance()->GetItem(name);
|
||||
return ConfigTypeRegistry::GetInstance()->GetItem(name);
|
||||
}
|
||||
|
||||
Registry<ConfigType, ConfigType::Ptr>::ItemMap ConfigType::GetTypes(void)
|
||||
ConfigTypeRegistry::ItemMap ConfigType::GetTypes(void)
|
||||
{
|
||||
return Registry<ConfigType, ConfigType::Ptr>::GetInstance()->GetItems();
|
||||
return ConfigTypeRegistry::GetInstance()->GetItems();
|
||||
}
|
||||
|
||||
void ConfigType::DiscardTypes(void)
|
||||
{
|
||||
Registry<ConfigType, ConfigType::Ptr>::GetInstance()->Clear();
|
||||
ConfigTypeRegistry::GetInstance()->Clear();
|
||||
}
|
||||
|
||||
ConfigTypeRegistry *ConfigTypeRegistry::GetInstance(void)
|
||||
{
|
||||
return Singleton<ConfigTypeRegistry>::GetInstance();
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "config/configitem.h"
|
||||
#include "base/array.h"
|
||||
#include "base/registry.h"
|
||||
#include "base/singleton.h"
|
||||
|
||||
namespace icinga
|
||||
{
|
||||
|
@ -74,6 +75,12 @@ private:
|
|||
static void AddParentRules(std::vector<TypeRuleList::Ptr>& ruleLists, const ConfigType::Ptr& item);
|
||||
};
|
||||
|
||||
class I2_CONFIG_API ConfigTypeRegistry : public Registry<ConfigTypeRegistry, ConfigType::Ptr>
|
||||
{
|
||||
public:
|
||||
static ConfigTypeRegistry *GetInstance(void);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* CONFIGTYPE_H */
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "db_ido/i2-db_ido.h"
|
||||
#include "base/object.h"
|
||||
#include "base/registry.h"
|
||||
#include "base/singleton.h"
|
||||
|
||||
namespace icinga
|
||||
{
|
||||
|
@ -75,8 +76,14 @@ private:
|
|||
*
|
||||
* @ingroup ido
|
||||
*/
|
||||
class DbTypeRegistry : public Registry<DbTypeRegistry, DbType::Ptr>
|
||||
{ };
|
||||
class I2_DB_IDO_API DbTypeRegistry : public Registry<DbTypeRegistry, DbType::Ptr>
|
||||
{
|
||||
public:
|
||||
static inline DbTypeRegistry *GetInstance(void)
|
||||
{
|
||||
return Singleton<DbTypeRegistry>::GetInstance();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Helper class for registering DynamicObject implementation classes.
|
||||
|
|
Loading…
Reference in New Issue