From 56ae875861ab260b80a030f50c4aff9f9dc8fff0 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 13:32:39 +0200 Subject: Adding upstream version 2.14.2. Signed-off-by: Daniel Baumann --- lib/icinga/dependency.hpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lib/icinga/dependency.hpp (limited to 'lib/icinga/dependency.hpp') diff --git a/lib/icinga/dependency.hpp b/lib/icinga/dependency.hpp new file mode 100644 index 0000000..6cebfaa --- /dev/null +++ b/lib/icinga/dependency.hpp @@ -0,0 +1,62 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +#ifndef DEPENDENCY_H +#define DEPENDENCY_H + +#include "icinga/i2-icinga.hpp" +#include "icinga/dependency-ti.hpp" + +namespace icinga +{ + +class ApplyRule; +struct ScriptFrame; +class Host; +class Service; + +/** + * A service dependency.. + * + * @ingroup icinga + */ +class Dependency final : public ObjectImpl +{ +public: + DECLARE_OBJECT(Dependency); + DECLARE_OBJECTNAME(Dependency); + + intrusive_ptr GetParent() const; + intrusive_ptr GetChild() const; + + TimePeriod::Ptr GetPeriod() const; + + bool IsAvailable(DependencyType dt) const; + + void ValidateStates(const Lazy& lvalue, const ValidationUtils& utils) override; + + static void EvaluateApplyRules(const intrusive_ptr& host); + static void EvaluateApplyRules(const intrusive_ptr& service); + static void AssertNoCycles(); + + /* Note: Only use them for unit test mocks. Prefer OnConfigLoaded(). */ + void SetParent(intrusive_ptr parent); + void SetChild(intrusive_ptr child); + +protected: + void OnConfigLoaded() override; + void OnAllConfigLoaded() override; + void Stop(bool runtimeRemoved) override; + +private: + Checkable::Ptr m_Parent; + Checkable::Ptr m_Child; + + static bool m_AssertNoCyclesForIndividualDeps; + + static bool EvaluateApplyRuleInstance(const Checkable::Ptr& checkable, const String& name, ScriptFrame& frame, const ApplyRule& rule, bool skipFilter); + static bool EvaluateApplyRule(const Checkable::Ptr& checkable, const ApplyRule& rule, bool skipFilter = false); +}; + +} + +#endif /* DEPENDENCY_H */ -- cgit v1.2.3