mirror of
				https://github.com/Icinga/icinga2.git
				synced 2025-11-03 21:25:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
 | 
						|
 | 
						|
#include "base/debuginfo.hpp"
 | 
						|
#include "base/configtype.hpp"
 | 
						|
 | 
						|
library base;
 | 
						|
 | 
						|
namespace icinga
 | 
						|
{
 | 
						|
 | 
						|
code {{{
 | 
						|
enum HAMode
 | 
						|
{
 | 
						|
	HARunOnce,
 | 
						|
	HARunEverywhere
 | 
						|
};
 | 
						|
 | 
						|
class NameComposer
 | 
						|
{
 | 
						|
public:
 | 
						|
	virtual ~NameComposer();
 | 
						|
 | 
						|
	virtual String MakeName(const String& shortName, const Object::Ptr& context) const = 0;
 | 
						|
	virtual Dictionary::Ptr ParseName(const String& name) const = 0;
 | 
						|
};
 | 
						|
}}}
 | 
						|
 | 
						|
abstract class ConfigObjectBase
 | 
						|
{ };
 | 
						|
 | 
						|
code {{{
 | 
						|
class ConfigObjectBase : public ObjectImpl<ConfigObjectBase>
 | 
						|
{
 | 
						|
public:
 | 
						|
	inline DebugInfo GetDebugInfo() const
 | 
						|
	{
 | 
						|
		return m_DebugInfo;
 | 
						|
	}
 | 
						|
 | 
						|
	void SetDebugInfo(const DebugInfo& di)
 | 
						|
	{
 | 
						|
		m_DebugInfo = di;
 | 
						|
	}
 | 
						|
 | 
						|
	inline virtual void Start(bool /* runtimeCreated */)
 | 
						|
	{ }
 | 
						|
 | 
						|
	inline virtual void Stop(bool /* runtimeRemoved */)
 | 
						|
	{ }
 | 
						|
 | 
						|
private:
 | 
						|
	DebugInfo m_DebugInfo;
 | 
						|
};
 | 
						|
 | 
						|
}}}
 | 
						|
 | 
						|
abstract class ConfigObject : ConfigObjectBase < ConfigType
 | 
						|
{
 | 
						|
	[config, no_user_modify] String __name (Name);
 | 
						|
	[config, no_user_modify, required] String "name" (ShortName) {
 | 
						|
		get {{{
 | 
						|
			String shortName = m_ShortName.load();
 | 
						|
			if (shortName.IsEmpty())
 | 
						|
				return GetName();
 | 
						|
			else
 | 
						|
				return shortName;
 | 
						|
		}}}
 | 
						|
	};
 | 
						|
	[config, no_user_modify] name(Zone) zone (ZoneName);
 | 
						|
	[config, no_user_modify] String package;
 | 
						|
	[config, get_protected, no_user_modify] Array::Ptr templates;
 | 
						|
	[config, no_storage, no_user_modify] Dictionary::Ptr source_location {
 | 
						|
		get;
 | 
						|
	};
 | 
						|
	[get_protected, no_user_modify] bool active;
 | 
						|
	[get_protected, no_user_modify] bool paused {
 | 
						|
		default {{{ return true; }}}
 | 
						|
	};
 | 
						|
	[get_protected, no_user_view, no_user_modify] bool start_called;
 | 
						|
	[get_protected, no_user_view, no_user_modify] bool stop_called;
 | 
						|
	[get_protected, no_user_view, no_user_modify] bool pause_called;
 | 
						|
	[get_protected, no_user_view, no_user_modify] bool resume_called;
 | 
						|
	[enum] HAMode ha_mode (HAMode);
 | 
						|
	[protected, no_user_view, no_user_modify] Dictionary::Ptr extensions;
 | 
						|
 | 
						|
	[protected, no_user_view, no_user_modify] bool state_loaded;
 | 
						|
	[no_user_modify] Dictionary::Ptr original_attributes;
 | 
						|
	[state, no_user_modify] double version {
 | 
						|
		default {{{ return 0; }}}
 | 
						|
	};
 | 
						|
	[no_user_view, no_user_modify] String icingadb_identifier;
 | 
						|
};
 | 
						|
 | 
						|
}
 |