diff --git a/userspace/engine/rule_loader.h b/userspace/engine/rule_loader.h index c0c30522..3663fea0 100644 --- a/userspace/engine/rule_loader.h +++ b/userspace/engine/rule_loader.h @@ -297,6 +297,7 @@ namespace rule_loader */ struct engine_version_info { + engine_version_info() : ctx("no-filename-given"), version(0) { }; engine_version_info(context &ctx); ~engine_version_info() = default; engine_version_info(engine_version_info&&) = default; diff --git a/userspace/engine/rule_loader_collector.cpp b/userspace/engine/rule_loader_collector.cpp index 0ec48803..3a87fcf7 100644 --- a/userspace/engine/rule_loader_collector.cpp +++ b/userspace/engine/rule_loader_collector.cpp @@ -116,6 +116,11 @@ const std::vector& r return m_required_plugin_versions; } +const rule_loader::engine_version_info& rule_loader::collector::required_engine_version() const +{ + return m_required_engine_version; +} + const indexed_vector& rule_loader::collector::lists() const { return m_list_infos; @@ -137,6 +142,10 @@ void rule_loader::collector::define(configuration& cfg, engine_version_info& inf THROW(v < info.version, "Rules require engine version " + std::to_string(info.version) + ", but engine version is " + std::to_string(v), info.ctx); + if(m_required_engine_version.version < info.version) + { + m_required_engine_version = info; + } } void rule_loader::collector::define(configuration& cfg, plugin_version_info& info) diff --git a/userspace/engine/rule_loader_collector.h b/userspace/engine/rule_loader_collector.h index 22d6bad3..bc773813 100644 --- a/userspace/engine/rule_loader_collector.h +++ b/userspace/engine/rule_loader_collector.h @@ -46,6 +46,11 @@ public: */ virtual const std::vector& required_plugin_versions() const; + /*! + \brief Returns the required engine versions + */ + virtual const engine_version_info& required_engine_version() const; + /*! \brief Returns the list of defined lists */ @@ -92,6 +97,7 @@ private: indexed_vector m_macro_infos; indexed_vector m_list_infos; std::vector m_required_plugin_versions; + engine_version_info m_required_engine_version; }; }; // namespace rule_loader