1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ 2 3 #ifndef ICINGAAPPLICATION_H 4 #define ICINGAAPPLICATION_H 5 6 #include "icinga/i2-icinga.hpp" 7 #include "icinga/icingaapplication-ti.hpp" 8 #include "icinga/macroresolver.hpp" 9 10 namespace icinga 11 { 12 13 /** 14 * The Icinga application. 15 * 16 * @ingroup icinga 17 */ 18 class IcingaApplication final : public ObjectImpl<IcingaApplication>, public MacroResolver 19 { 20 public: 21 DECLARE_OBJECT(IcingaApplication); 22 DECLARE_OBJECTNAME(IcingaApplication); 23 24 static void StaticInitialize(); 25 26 int Main() override; 27 28 static void StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata); 29 30 static IcingaApplication::Ptr GetInstance(); 31 32 bool ResolveMacro(const String& macro, const CheckResult::Ptr& cr, Value *result) const override; 33 34 String GetNodeName() const; 35 36 int GetMaxConcurrentChecks() const; 37 38 String GetEnvironment() const override; 39 void SetEnvironment(const String& value, bool suppress_events = false, const Value& cookie = Empty) override; 40 41 void ValidateVars(const Lazy<Dictionary::Ptr>& lvalue, const ValidationUtils& utils) override; 42 43 private: 44 void DumpProgramState(); 45 void DumpModifiedAttributes(); 46 47 void OnShutdown() override; 48 }; 49 50 } 51 52 #endif /* ICINGAAPPLICATION_H */ 53