/* 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 { 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; }; }