/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ #ifndef ZONE_H #define ZONE_H #include "remote/i2-remote.hpp" #include "remote/zone-ti.hpp" #include "remote/endpoint.hpp" namespace icinga { /** * @ingroup remote */ class Zone final : public ObjectImpl { public: DECLARE_OBJECT(Zone); DECLARE_OBJECTNAME(Zone); void OnAllConfigLoaded() override; Zone::Ptr GetParent() const; std::set GetEndpoints() const; std::vector GetAllParentsRaw() const; Array::Ptr GetAllParents() const override; bool CanAccessObject(const ConfigObject::Ptr& object); bool IsChildOf(const Zone::Ptr& zone); bool IsGlobal() const; bool IsSingleInstance() const; static Zone::Ptr GetLocalZone(); protected: void ValidateEndpointsRaw(const Lazy& lvalue, const ValidationUtils& utils) override; private: Zone::Ptr m_Parent; std::vector m_AllParents; }; } #endif /* ZONE_H */