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